1

私は正規表現が非常に苦手です。現在、いくつかのコードをデバッグしています。コードは次のような式で文字列を検索しています。

r"coding[:=]\s*([-\w.]+)"

どのような文字列を検索しますか?

私には、次のようなものに一致するようです:

coding= xxxxx

しかし、謎のキャラクターの正確な意味はわかりません。誰かがもう少し詳しく説明できますか?

4

3 に答える 3

8

これを分解してみましょう:

  • coding:リテラルテキストの一致、「コーディング」という単語のみが実行されます
  • [:=]:文字グループ、コロン ":"または等号"="のいずれかが一致します
  • \s*:0個以上の空白文字。スペースとタブですが、そのように構成されている場合は改行にも一致する可能性があります。
  • (..):一致するグループ。コンテンツは、さらに処理するための一致するグループとして使用できます。
  • [-\w.]+:グループ内の1つ以上の文字で、ダッシュ「-」、ドット「。」に一致します。または任意の単語文字。\wは、通常、文字「a」から「z」(大文字と小文字)、数字「0」から「9」、およびアンダースコア「_」に一致する文字クラスです。

ただし、Unicodeサポートをオンにすると(Python 3ではデフォルトでオンになります)、\wクラスはさらに多くをキャプチャします。Unicodeデータベースで英数字として分類された文字はすべて一致します。

一致の例:

  • "coding = foobar320_42spam_eggs"、グループはfoobar320_42spam_eggs
  • 「コーディング:何かまたは他の」、グループはsomething-or-other
  • 「コーディング:whatever.42」、グループはwhatever.42
于 2012-09-01T09:36:23.337 に答える
2

以下に一致します。

coding+ 1 つ:または=+ 0 個以上のスペース ( \s= スペース、タブ、任意の空白文字) +.およびを含む場合があるテキスト-

于 2012-09-01T09:34:18.233 に答える
1

正規表現のサンプル表現http://rubular.com/r/cqE6HTD8Vb

于 2012-09-01T09:33:34.200 に答える