1

すべての例では、出力として「プログラミング」が必要です

例 1 : これはプログラミング テストです。
REGEX : a+\sprogramming -- 動作中

例 2 : これはテスト プログラミングです。これはプログラミング テスト
REGEX です: a+\s(?!test)\sprogramming -- 動作中

例 3 : これはテスト プログラミングです。これは基本的なプログラミング テスト
REGEX です: a+\s(?!test)(.+)\sprogramming -- 動作しません

実際の O/P : 基本的なプログラミング
予想される O/P : プログラミング

つまり、'a' を 1 回だけ出力する必要があります。

前もって感謝します。

4

2 に答える 2

2

これはあなたが探しているものですか?

REGEX : .*(a programming).*

予想されるO/p:

1.9.3p194 :001 > "This is a test programming. This is a basic a programming test ".match(/.*(a programming).*/)
 => #<MatchData "This is a test programming. This is a basic a programming test " 1:"a programming"> 
1.9.3p194 :002 > "This is a programming test. ".match(/.*(a programming).*/) => #<MatchData "This is a programming test. " 1:"a programming"> 
1.9.3p194 :003 > "This is a test programming. This is a programming test ".match(/.*(a programming).*/)
 => #<MatchData "This is a test programming. This is a programming test " 1:"a programming"> 
于 2012-10-30T06:35:46.090 に答える
0

あなたの質問を理解しているかどうかわかりません。

"a" と "test" など、2 つの単語の間の単語を一致させたい場合は、次のようにします。

a\s+(\S+)\s+test

(\S大文字の「S」を含む は、空白文字に一致します。)

そのような最後のインスタンスのみが必要な場合は、次のようにします。

a\s+(\S+)\s+test(?!.*a\s+(\S+)\s+test)

(否定先読みアサーションの内側は、外側の部分のコピーであることに注意してください。)

さらに、単語の境界を使用したい場合があります。

\ba\s+(\S+)\s+test\b(?!.*\ba\s+(\S+)\s+test\b)
于 2012-10-30T06:37:46.813 に答える