那里有正则表达式大师吗?我需要一个匹配的Java正则表达式:
“随机特定词”
包括引号。因此我需要
匹配第一个报价, RANDOMSTUFF(任意数量的单词,前面的 SPECIFICWORD 之间有空格) SPECIFICWORD(我不会在这里指定的特定词。) 和结束语。
我不想匹配以下内容:
随机特定词 “随机的东西不是特定的词” "RANDOMSTUFF SPECIFICWORD MORERANDOMSTUFF"
\".*\sSPECIFICWORD\"
如果您不想在两者之间使用引号,请使用\"[^"]*\sSPECIFICWORD\"
.
匹配任何字符
*
表示 0 个或多个前面的字符(在这种情况下,0 个或多个任何字符)
\s
匹配任何空白字符
SPECIFICWORD
将被视为字符串文字,假设没有特殊字符(如果有则转义)
\"
匹配引号
[^"]
表示除引号之外的任何字符(这^
就是使它成为“除外”的原因)
此外,此链接可能很有用。正则表达式是强大的表达式,几乎适用于任何语言,因此熟悉使用它们将是一件好事。
编辑:
正如其他几位海报所指出的那样,只有在整行匹配时,添加^
到开头和$
结尾才会匹配。
^
匹配行
$
首 匹配行尾
^.*\s+SPECIFICWORD"$
'^' 匹配 '从行首' .* 匹配任何东西 \s+ 匹配'任意数量的空格,但至少有一些'SPECIFICWORD' 是字符串文字 $ 表示'这是行尾'
请注意,^ 和 $ 并不总是基于“行”;大多数语言允许您指定“多行”模式,这将导致它们匹配“字符串开头/字符串结尾”而不是一次匹配一行。
尝试:
\"[\w\s]*SPECIFICWORD\"
像这样工作:
\"
匹配开场白
[\w\s]*
匹配以下集合中的零个或多个字符:
[a-zA-Z_0-9]
(\w
部分)
[ \t\n\x0B\f\r]
(\s
部分)
SPECIFICWORD
匹配SPECIFICWORD
\"
匹配结束报价
该字符串是逐行匹配还是会在文本中找到?如果是这样,您可以添加锚点以确保它与字符串匹配。
^(\".*\sSPECIFICWPRD\")$
说,在行的开头,寻找一个双引号,后跟零个或多个随机字符,后跟一个空格,然后是特定单词,然后是字符串末尾的双引号。
可选地,有用于设计正则表达式模式并实时查看它们匹配的优秀工具。
这里有几个例子: