1

2つの単語の間にすべてのテキストを取得したい(最初の単語は固定[One]ですが、2番目は2つの単語[Two]Or[Three]のいずれかです)。

:: 見つかったテキストと 2 番目の単語の間にスペースがある場合とない場合があります。例えば:

One     i am  
here
Two
i am fine 
One     i am 
here 
 Two
i am fine 
One     i am  
here
Three
i am fine 
One     i am  
here 
 Two
i am fine

私が見つけたのは

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=\\bTwo\\b)");

しかし、これは完全な単語が必要なため正しくありません。

「2」が有効です。
"fineTwo" は無効です。

4

3 に答える 3

3

単語境界を使用しているため、完全な単語にのみ一致します\b。「fineTwo」を受け入れたい場合は、最初の境界を削除します

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=Two\\b)");

"Two" または "Three" を末尾として受け入れるには、次のように交互に使用します。

Pattern p = Pattern.compile("(?<=\\bOne\\b)(.*?)(?=(?:Two|Three)\\b)");
于 2013-04-12T06:21:43.267 に答える