正则表达式 - 与 : and space 匹配的字符串

标签 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"

下面是我尝试过的正则表达式。它正在工作,但对于第一个字符串,它与“”匹配
\=\s*STRING\:\s(?=\")\"([^"]*)|([^:]*$)

为了匹配上述可能的字符串,我使用了与 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`

需要的输出:
1.  [29-58] `1234 blah blah blah` --> No space 

请帮助我解决这个问题。

最佳答案

试试这个正则表达式:

=\s*STRING:\s("?)([^"]*)\1

无需使用前瞻,只需使用 ("?)匹配引用(如果存在),然后使用反向引用在最后再次匹配它。 STRING 后面的字符串将存储在 $2 .

关于正则表达式 - 与 : and space 匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474659/

相关文章:

c++ - 如何将有界重复匹配为仅 n 和 m 次

Javascript 拆分并加入 PHP

Perl 排序损坏 bsd_glob 结果

perl - 在 Perl 中发送 SMTP 电子邮件的更快方法?

regex - 为什么带星号的正则表达式会结束?总会有空火柴

javascript - 数字格式化的正则表达式

javascript - 用于 IE 的 RegExp 负后视断言的替代方案

mysql - Perl DBI 使用 mysql 原生多插入能力插入多行

Perl , html 数据和以 utf-8 编码的字符

perl - 那么<FILE>到底是做什么的呢?