"^[\\s]*DISPLAY.*?(\".*?\").*?\\."
我有上面的正则表达式。但是我遇到了问题。
DISPLAY AC-YEAR LINE 2 POSITION 68 REVERSE.
未捕获此字符串。
DISPLAY "EATING.FOOD" LINE 13 POSITION 31 REVERSE.
成功捕获。
我无法想象我应该如何编写正则表达式。
"^[\\s]*DISPLAY.*?(\".*?\") *,?,?? .*?\\.
在)
之后放置量词不起作用。它甚至没有抓住这个群体。
答案 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(.*?)\\.$