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.

上記のコードは、改行を含む 1 つの文字列を表しています。コンマの後にオプションの副次句が続く文があることに注意してください。これらの 2 部構成の文では、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 に答える