次のようなパターンを一致させたい:'''abc'''。しかし、ドキュメントのようにいくつかのノイズが''''''abc'''あります。正確に3つが前に付いている単語が欲しいだけです" ' "。やってみ" [^']'''[^'] "ました。しかし、それは機能しません。正規表現" '{3} "は3つ以上に一致します" ' "。
だから誰かが私を助けることができますか?
次のようなパターンを一致させたい:'''abc'''。しかし、ドキュメントのようにいくつかのノイズが''''''abc'''あります。正確に3つが前に付いている単語が欲しいだけです" ' "。やってみ" [^']'''[^'] "ました。しかし、それは機能しません。正規表現" '{3} "は3つ以上に一致します" ' "。
だから誰かが私を助けることができますか?
(?<!')'{3}(?!')
サポートされている場合は、負の先読み(および後読み)を使用します。
'''編集:あなたがから一致したいと仮定します'''abc'''、それはあなたの質問が意味するものだからです。異なる場合は指定してください。
あなたは基本的にすでに自分で解決策を与えました。正確に3で囲まれている文字列を照合する場合は'、次のようにします(例ではPythonを使用します)。
In [33]: re.findall("'{3}\w+'{3}", "'''abc'''")
Out[33]: ["'''abc'''"]
3を超える文字列が前に付くのを避けたい場合は'、否定的な後読みアサーションを使用するのが最善です(?<!...)。
In [59]: re.findall("(?<!')'{3}\w+'{3}", "'''abc'''")
Out[59]: ["'''abc'''"]
In [60]: re.findall("(?<!')'{3}\w+'{3}", "''''''''''abc'''")
Out[60]: []
In [62]: re.findall("(?<!')'{3}\w+'{3}", "'''abc''''''''''")
Out[62]: ["'''abc'''"]
3を超えて成功する文字列も避けたい場合は'、負の先読みアサーションを追加します(?!...)。
In [63]: re.findall("(?<!')'{3}\w+'{3}(?!')", "'''abc'''")
Out[63]: ["'''abc'''"]
In [64]: re.findall("(?<!')'{3}\w+'{3}(?!')", "''''''''''abc'''")
Out[64]: []
In [65]: re.findall("(?<!')'{3}\w+'{3}(?!')", "'''abc''''''''''")
Out[65]: []
注:先読みと後読みがサポートされているかどうかは、プログラミング言語によって異なります。もしそうなら、これはあなたが望むことを達成するための最良の方法です。
のようなものを試してください^[^']*'{3}[^']+'{3}[^']*$。中央のに注意してください[^']+。これは、両側の3つの'''の間に何かがあることも伝える必要があるためです。