3

特定の単語に一致し、ピリオドが検出されるまで一致し続ける正規表現を作成しようとしています。例えば:

文章:

乙女、クレーム、またはスターター以外の 2 つのレースに勝ったことがない、または 3 つのレースに勝ったことがない、または $25,000 のオプションのクレーム価格。3 歳児、118 ポンド。古い、123 ポンド。3 月 9 日以降の $24,000 の非勝者は、2 ポンドを許可されました。

希望の試合:

乙女、クレーム、またはスターター以外の 2 つのレースに勝ったことがない、または 3 つのレースに勝ったことがない、または $25,000 のオプションのクレーム価格。

正規表現:

(?<Match1>Which\s[a-zA-Z]*[.])

残念ながら、私が提案した表現はすべてのテキストを捉えており、最初のピリオドではなく最後のピリオドまで拡張されているようです。

4

3 に答える 3

2

それは実際には非常に簡単です。[^.]*次の文字を除くすべての文字を一致させ、目的の単語を境界.で囲むために使用します。一致した出力にそれを含めたいと仮定して、最終を\b追加しました。.\.

(?<Match1>\bWhich\b[^.]*\.)
于 2012-10-03T01:49:30.787 に答える
2

(?<Match1>Which[^.]*?[.])

ピリオドからピリオドまでの非貪欲な一致。

于 2012-10-03T01:51:24.403 に答える
2

簡単です:

([^.]*This[^.]*\.)

実際に見てみましょう: http://regexr.com?32b8b

「This」を自分の単語に置き換えるだけで、すべての「文」に一致させる必要があります (本当にそうする場合は、ピリオドに「!」と「?」を追加して、それらで終わる文に一致させることを検討する必要があります。それも)。

編集: これは、単語が含まれている場合は文全体に一致します。単語の前方のみが必要な場合、つまり、単語が文の途中にある場合は、最初の [^.]* を省略します。仕事。

(This[^.]*\.)
于 2012-10-03T02:02:07.780 に答える