正则表达式匹配可选子字符串的一部分,包括换行符

标签 regex

这是 this question 的变体和 this other question (by myself) .

我有一个需要使用正则表达式解析的字符串。该字符串类似于:

The XXX is blue.
The XXX is blue,
and the YYY is green.
The XXX is blue,
and the YYY is green.
The XXX is blue.
The XXX is blue.
The XXX is blue.
The XXX is blue.
The XXX is blue,
and the YYY is green.

上面的代码代表一个字符串,包括换行符。请注意有些句子后面的逗号后面是可选的子句。在那些由两部分组成的句子中,YYY“属于”前面的 XXX。

我需要匹配所有 XXX 及其对应的 YYY,因此结果应类似于:

[1][1] XXX
[1][2]
[2][1] XXX
[2][2] YYY
[3][1] XXX
[3][2] YYY
[4][1] XXX
[4][2]
[5][1] XXX
[5][2]
etc.

XXX 和 YYY 可以是任何字符(“.*”)

如何编写一个同时匹配 XXX 和 YYY 的正则表达式? (请记住,YYY 可以是可选的。我使用 PHP。)

最佳答案

这个问题的答案与您链接的第一个问题非常相似:

The (.*?) is blue(?:\.|,\nand the (.*?) is green\.)

查看其工作情况:http://www.rubular.com/r/MONXq83J80

关于正则表达式匹配可选子字符串的一部分,包括换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094897/

相关文章:

python - 使用一个分隔符但多个条件分割字符串

regex - 替换具有多个字符的字符串

Javascript RegExp - 测试方法问题

ruby-on-rails - 正则表达式匹配 Ruby 中成百上千的值

javascript - 在 JavaScript 中替换字符串中的一系列字符的最佳方法是什么

regex - 如何为 Apache 'DirectoryMatch' 编写格式正确的正则表达式?

java - 字符串中允许的字符的正则表达式返回 false

c# - 惰性量词和前瞻

c# - 自定义 ConfigurationElement 中的 ConfigurationProperty 出现意外的 RegexStringValidator 失败

regex - Mercurial/.hgignore - 如何忽略除文件夹内容之外的所有内容?