2013-02-21 64 views
1

任何正则表达式都掌握在那里?我需要一个与Java匹配的正则表达式:“* word”的正则表达式

 
"RANDOMSTUFF SPECIFICWORD" 

包括引号。 因此我需要

 
to match the first quote, 
RANDOMSTUFF (any number of words with spaces between preceding SPECIFICWORD) 
SPECIFICWORD (a specific word which I won't specify here.) 
and the ending quote. 

想匹配的东西,如:

 
RANDOMSTUFF SPECIFICWORD 
"RANDOMSTUFF NOTTHESPECIFICWORD" 
"RANDOMSTUFF SPECIFICWORD MORERANDOMSTUFF" 

回答

3

\".*\sSPECIFICWORD\"

如果您不希望允许引号之间,使用\"[^"]*\sSPECIFICWORD\"

.匹配任何字符
*说0或多个前面的字符(在这种情况下,0个或多个的任何字符)
\s匹配任何空白字符
SPECIFICWORD将被视为一个字符串,假设没有特殊的字符(如果转义有)
\"相匹配的报价
[^"]意味着除了报价的任何字符(^是什么使得它“除了”)

此外,this link可能是有用的。正则表达式是强大的表达式,适用于任何语言,因此使用它们会变得很好。

编辑:

其他一些海报指出,加入^的开头和$到最后,如果整条生产线匹配,只有匹配。

^匹配行的开头
$

+0

这做到了!谢谢!我现在接受你的答案,但我显然必须等7分钟。 – 2013-02-21 17:36:26

+0

不用担心。很高兴我能帮上忙!快乐编码:) – skirkpatrick 2013-02-21 17:39:46

0

^结束匹配。* \ S + SPECIFICWORD“$

'^' '从线开始' 比赛*匹配任何 \ S +匹配“空白的任何金额,但至少一些” SPECIFICWORD”是一个字符串字面 $的意思是‘这是该行的末尾’

请注意,^和$并不总是基于'line'的;大多数语言都允许您指定一个“多行”模式,以使它们一次匹配“字符串的开始/字符串的结尾”而不是一行。

0

尝试:

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

是这样工作的:

\"比赛开引号

[\w\s]*比赛从下列一组零个或多个字符:

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

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

SPECIFICWORDSPECIFICWORD

\"比赛闭引号

+0

这不允许多个单词,只有一个单词(长度大于等于1)跟着一个或多个空白字符,然后是特定单词。如果将'\ w + \ s +'更改为'[\ w \ s] +',那就可以做到这一点,尽管'*'可能会比'+'更好,因为op没有指定必须先前话。 – skirkpatrick 2013-02-21 17:42:38

+0

但OP不希望正则表达式匹配多个单词。 – 2013-02-21 17:44:32

+0

“任何数量的前面带有空格的单词” – skirkpatrick 2013-02-21 17:45:10

0

将这个字符串匹配如由线的基础的线匹配或者会在文本中找到它?如果是这样,您可以添加锚点以确保它匹配字符串。

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

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

(可选)有一些优秀的工具可用于设计正则表达式模式并查看它们实时匹配的内容。

这里有几个例子:

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

相关问题