正则表达式 - 匹配字符串:和空格

Raj*_*aja 4 regex perl

我有下面可能的字符串,我需要匹配特定的字符.

可能匹配的字符串:

dsg.1.2.3.4.5.6.7.5 = STRING: 1234 blah blah blah

OR

dsg.1.2.3.4.5.6.7.5 = STRING: "1234 blah blah blah"
Run Code Online (Sandbox Code Playgroud)

下面是我试过的正则表达式.它正在工作但是对于第一个字符串,它与""匹配

\=\s*STRING\:\s(?=\")\"([^"]*)|([^:]*$)
Run Code Online (Sandbox Code Playgroud)

为了匹配上面可能的字符串,我使用了if匹配良好的条件 dsg.1.2.3.4.5.6.7.5 = STRING: "1234 blah blah blah"

不是 dsg.1.2.3.4.5.6.7.5 = STRING: 1234 blah blah blah

匹配后的输出问题:

2.  [29-58] ` 1234 blah blah blah`
Run Code Online (Sandbox Code Playgroud)

需要输出:

1.  [29-58] `1234 blah blah blah` --> No space 
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

red*_*neb 7

试试这个正则表达式:

=\s*STRING:\s("?)([^"]*)\1
Run Code Online (Sandbox Code Playgroud)

不需要使用预测,只需使用("?)匹配引用(如果存在),然后使用反向引用再次匹配它.之后的字符串STRING将被存储$2.

  • 你也可以使用:`=\s*STRING:\ s"?([^"]*)` (3认同)