什么正则表达式会捕获从标记到行尾的所有内容?

use*_*349 106 regex

我有一个文本文件,表示单个备注'.

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

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
Run Code Online (Sandbox Code Playgroud)

Jos*_*den 141

'.*
Run Code Online (Sandbox Code Playgroud)

我相信你需要选项,Multiline.

  • 这将捕获字符 ' 的第一个实例和最后一行的结尾 (7认同)

Ben*_*ter 81

适当的正则表达式是'char后跟任意数量的任何字符[包括零字符],以字符串/行标记的结尾结束:

'.*$
Run Code Online (Sandbox Code Playgroud)

如果你想在'char但是不包含在输出中之后捕获所有内容,你会使用:

(?<=').*$
Run Code Online (Sandbox Code Playgroud)

这基本上说给我所有跟随'char直到行尾的字符.

编辑:已经注意到$在使用.*时是隐式的,因此不是严格要求的,因此模式:

'.* 
Run Code Online (Sandbox Code Playgroud)

在技​​术上是正确的,但更具体,更容易混淆以后的代码维护,因此我使用$.我认为,在可以质疑清晰度的情况下,宣布明确的行为总是比依赖隐性行为更好.

  • 不必要 - 但适合他想做的事情.它后来提醒人们,它期待从一直到最后的一切 (7认同)
  • $ 是不必要的。正常情况下,点会停在行尾。 (2认同)

Cov*_*ene 20

'.*$
Run Code Online (Sandbox Code Playgroud)

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


小智 9

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

要捕获所有内容,直到该行结束,我输入以下内容:

'.*?\n
Run Code Online (Sandbox Code Playgroud)

这只能捕获从该行到该行的所有内容.


gna*_*arf 5

这将捕获反向引用 1 中的 ' 之前的所有内容 - 以及反向引用 2 中 ' 之后的所有内容。尽管取决于语言 (\'),您可能需要转义撇号

/^([^']*)'?(.*)$/
Run Code Online (Sandbox Code Playgroud)

快速修改:如果该行没有 ' - 反向引用 1 仍应捕获整行。

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


Ges*_*ess 5

在您的示例中,我将采用以下模式:

'([^\n]+)$
Run Code Online (Sandbox Code Playgroud)

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

要将换行符包含在匹配中,您可以使用:

'[^\n]+\n
Run Code Online (Sandbox Code Playgroud)

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

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

'[^$]+$
Run Code Online (Sandbox Code Playgroud)