2

这是这个问题另一个问题(我自己)的变体。

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

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。)

4

2 回答 2

2

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

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

看到它工作:http ://www.rubular.com/r/MONXq83J80

于 2012-04-10T19:15:38.167 回答
0

由于似乎都是相同的句子结构,因此触发器可能只是
The/the。冗长是愚蠢的。

/^The (.*) is.*(?:\n.*the (.*) is)?/m

全局和多行模式(仅,点不包括换行符)

于 2012-04-10T20:17:28.613 回答