1

那里有正则表达式大师吗?我需要一个匹配的Java正则表达式:

“随机特定词”

包括引号。因此我需要

匹配第一个报价,
RANDOMSTUFF(任意数量的单词,前面的 SPECIFICWORD 之间有空格)
SPECIFICWORD(我不会在这里指定的特定词。)
和结束语。

不想匹配以下内容:

随机特定词
“随机的东西不是特定的词”
"RANDOMSTUFF SPECIFICWORD MORERANDOMSTUFF"
4

4 回答 4

3

\".*\sSPECIFICWORD\"

如果您不想在两者之间使用引号,请使用\"[^"]*\sSPECIFICWORD\"

.匹配任何字符
*表示 0 个或多个前面的字符(在这种情况下,0 个或多个任何字符)
\s匹配任何空白字符
SPECIFICWORD将被视为字符串文字,假设没有特殊字符(如果有则转义)
\"匹配引号
[^"]表示除引号之外的任何字符(这^就是使它成为“除外”的原因)

此外,此链接可能很有用。正则表达式是强大的表达式,几乎适用于任何语言,因此熟悉使用它们将是一件好事。

编辑:

正如其他几位海报所指出的那样,只有在整行匹配时,添加^到开头和$结尾才会匹配。

^匹配行
$首 匹配行尾

于 2013-02-21T17:31:48.137 回答
0

^.*\s+SPECIFICWORD"$

'^' 匹配 '从行首' .* 匹配任何东西 \s+ 匹配'任意数量的空格,但至少有一些'SPECIFICWORD' 是字符串文字 $ 表示'这是行尾'

请注意,^ 和 $ 并不总是基于“行”;大多数语言允许您指定“多行”模式,这将导致它们匹配“字符串开头/字符串结尾”而不是一次匹配一行。

于 2013-02-21T17:33:18.047 回答
0

尝试:

\"[\w\s]*SPECIFICWORD\"

像这样工作:

\" 匹配开场白

[\w\s]*匹配以下集合中的零个或多个字符:

  • [a-zA-Z_0-9]\w部分)

  • [ \t\n\x0B\f\r]\s部分)

SPECIFICWORD匹配SPECIFICWORD

\" 匹配结束报价

于 2013-02-21T17:33:25.473 回答
0

该字符串是逐行匹配还是会在文本中找到?如果是这样,您可以添加锚点以确保它与字符串匹配。

^(\".*\sSPECIFICWPRD\")$

说,在行的开头,寻找一个双引号,后跟零个或多个随机字符,后跟一个空格,然后是特定单词,然后是字符串末尾的双引号。

可选地,有用于设计正则表达式模式并实时查看它们匹配的优秀工具。

这里有几个例子:

http://gskinner.com/RegExr/ http://regex101.com/r/zC3fM1

于 2013-02-21T17:42:20.117 回答