我试图找出给出这样一个模式的正确的正则表达式:
@ abDC email@something.com 123 %&# @ deFG @@anything 123 = 56 @@ HIjk @@lolol 123 = 78
以下匹配结果:
match 1: @ abDC email@something.com 123 %&# match 2: @ deFG @@anything 123 = 56 @@ HIjk @@lolol 123 = 56
单词:任何以单个" @"开头的字符串;其次是任何字符,包括换行符,空格和" @"本身。
我已尝试使用@{1}.+
,但这导致三个单独的匹配而不是预期的两个匹配。请参阅Regex Storm。
答案 0 :(得分:0)
您可以匹配以单个@
开头的行,也可以选择包含以下@
开头的行:
(?m)^@(?!@)[^\r\n]*(?:\r?\n@@[^\r\n]*)*
请参阅regex demo
<强>详情
(?m)
- 多线修改器^
- 开始行@
- @
字符(?!@)
- 未跟@
[^\r\n]*
- \r\n
或\n
(?:\r?\n@@[^\r\n]*)*
- 零次或多次出现
\r?\n
- CRLF或LF换行@@
- @@
子字符串[^\r\n]*
- 其余部分。请注意,[^\r\n]*
仅使用.*
,因为在.NET正则表达式中,.
与CR匹配。如果这不重要,您可以使用
(?m)^@(?!@).*(?:\n@@.*)*