什么正则expression式会捕获从标记到行结束的所有内容?

我有一个文本文件,表示与一个单一'

有些行有两个引号,但是我需要从'和”换行符的第一个实例中获取所有内容。

 I AL01 ' A-LINE '091398 GDK 33394178 402922 0831850 ' '091398 GDK 33394179 I AL02 ' A-LINE '091398 GDK 33394180 400722 0833118 ' '091398 GDK 33394181 I A10A ' A-LINE 102 ' 53198 DJ 33394182 395335 0832203 ' ' 53198 DJ 33394183 I A10B ' A-LINE 102 ' 53198 DJ 3339418 
 '.* 

我相信你需要选项Multiline。

适当的正则expression式应该是'字符跟随任何数字的任何字符(包括零字符)以string/行标记的结尾结尾:

 '.*$ 

如果你想捕捉'char' 后面的所有内容但是不包含在输出中,你可以使用:

 (?<=').*$ 

这基本上说,给我所有的字符,直到行结束的字符。

编辑 :它已经被注意到,$是隐式使用。*,因此不是严格要求,因此模式:

 '.* 

在技​​术上是正确的,但是它更清楚明确,避免以后的代码维护混淆,因此我使用$。 我相信,在清晰度可能受到质疑的情况下,宣布明确的行为比依靠隐性行为总是更好的。

 '.*$ 

从单引号( ' )开始,匹配任意字符( . )零次或多次( * )直到行尾( $ )。

当我在Windows(Notepad ++)中尝试“*”时,它会匹配第一个'之后的所有内容,直到最后一行结束。

捕捉所有东西,直到该行结束我input以下内容:

 '.*?\n 

这只会捕获从'直到该行结束的所有内容。

这将捕捉到反向引用1中的所有内容以及反向引用2中的所有内容。您可能需要根据语言(\')来跳过撇号

 /^([^']*)'?(.*)$/ 

快速修改:如果该行没有“ – 反向引用1”,则应该抓住整个行。

 ^ - start of string ([^']*) - capture any number of not ' characters '? - match the ' 0 or 1 time (.*) - capture any number of characters $ - end of string 

在你的例子中,我会采取以下模式:

 '([^\n]+)$ 

使用多行和全局选项来匹配所有发生的事件。

要在比赛中包含换行符,您可以使用:

 '[^\n]+\n 

但是如果没有换行,这可能会错过最后一行。

对于单行,如果您不需要匹配换行符,我宁愿使用:

 '[^$]+$