4

例を挙げて説明するとよいでしょう。

これはテキストです:

<li>hello 
THE WORDS
</li>

<li> cruel </li>

<li> world THE WORDS </li>

<li>で始まり、で終わり、</li>を含む文字列を検索したいTHE WORDS<li> hello THE WORDS </li>とのみに一致することを期待してい<li> world THE WORDS </li>ます。

私が試したこと:(?s)<li>.*?(THE WORDS).*?</li>

これで、2試合目は<li> cruel </li> <li> world THE WORDS </li>.

Sublime Text を使用しています。

4

2 に答える 2

5

編集:新しい要件については、次の正規表現を使用します。

(?s)<li>(?:(?!</li>).)*?THE WORDS.*?</li>

説明

  • (?s)モードをアクティブDOTALLにして、ドットが行全体で一致するようにします
  • <li>リテラル文字に一致
  • (?:(?!</li>).)続くものはそうではないと主張し、</li1文字に一致します
  • 数量詞は、*?私たちを怠惰にマッチさせます....
  • THE WORDS
    • 数量詞は、*?私たちを怠惰にマッチさせます....
  • リテラル</li>

元の回答 (異なる要件):

この単純な正規表現を使用します (Sublime でテスト済み):

x+[^xy]*z[^xy]*y+

regex demoで一致を参照してください。

説明

  • x+1 つ以上のx文字に一致
  • [^xy]*xanでも a でもない任意の文字に一致します。y
  • z必要なものに一致しzます (少なくとも 1 つあることを確認します)
  • [^xy]*xanでも a でもない任意の文字に一致します。y
  • y+1 つ以上のy文字に一致
于 2014-07-10T09:48:26.070 に答える
0

以下のコマンドは、文字列のみに一致しxx hello zz yy、両方の文字列からのxx world zz yyみキャプチャします。zz

<li>(?:(?!<\/li>).)*(THE WORDS).*?<\/li>

デモ

于 2014-07-10T09:37:53.800 に答える