帮助java正则表达式

时间:2011-01-13 13:14:17

标签: java regex

"^[\\s]*DISPLAY.*?(\".*?\").*?\\."

我有上面的正则表达式。但是我遇到了问题。

DISPLAY AC-YEAR LINE 2 POSITION 68 REVERSE.

未捕获此字符串。

DISPLAY "EATING.FOOD" LINE 13 POSITION 31 REVERSE.

成功捕获。

我无法想象我应该如何编写正则表达式。

"^[\\s]*DISPLAY.*?(\".*?\")  *,?,??       .*?\\.

)之后放置量词不起作用。它甚至没有抓住这个群体。

3 个答案:

答案 0 :(得分:2)

正则表达式需要在DISPLAY字后出现一对引号(“)。这就是第一个不起作用的原因。

如果你想要在DISPLAY之后的第一个非空白字(DISPLAY和LINE之间的所有内容,这应该有效:

^[\\s]*DISPLAY\\s*?(\".*?\"|.*?)\\s*?LINE.*?\\.

答案 1 :(得分:0)

第一个字符串与正则表达式不匹配,因为(\".*?\")匹配start quot和end quot之间的任何内容,whicxh不在你的字符串中。我建议你在这里测试你的正则表达式http://www.regexplanet.com/simple/index.html

答案 2 :(得分:0)

这应该可以捕捉AC-YEAR和“EATING.FOOD”,同时匹配整行:

^\\s*DISPLAY\\s(.*?)\\s.*\\.$

请注意,$匹配行的结尾,因此字面点\\.只会在结尾处匹配。

如果您想在DISPLAY之后捕获所有内容,则应该这样做:

^\\s*DISPLAY\\s(.*?)\\.$