我有下面可能的字符串,我需要匹配特定的字符.
可能匹配的字符串:
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)
请帮我解决这个问题.
试试这个正则表达式:
=\s*STRING:\s("?)([^"]*)\1
Run Code Online (Sandbox Code Playgroud)
不需要使用预测,只需使用("?)匹配引用(如果存在),然后使用反向引用再次匹配它.之后的字符串STRING将被存储$2.