re.findall
後に続く単語を検出する必要がありますa "="
したがって、次のような例で機能します
re.findall('\w+(?=[=])', "I think Python=amazing")
しかし、「私はPython =素晴らしいと思います」または「Python =素晴らしい」では機能しません...ここで空白の問題を適切に統合する方法がわかりません。
本当にありがとう!
re.findall
後に続く単語を検出する必要がありますa "="
したがって、次のような例で機能します
re.findall('\w+(?=[=])', "I think Python=amazing")
しかし、「私はPython =素晴らしいと思います」または「Python =素晴らしい」では機能しません...ここで空白の問題を適切に統合する方法がわかりません。
本当にありがとう!
'(\w+)\s*=\s*'
re.findall('(\w+)\s*=\s*', 'I think Python=amazing') \\ return 'Python'
re.findall('(\w+)\s*=\s*', 'I think Python = amazing') \\ return 'Python'
re.findall('(\w+)\s*=\s*', 'I think Python =amazing') \\ return 'Python'
あなたはおそらく以前の質問に関連して「再び正規表現で立ち往生している」と言いましたあなたが尋ねた質問への答えを得たスクリプトでPython変数を識別して置き換える方法を探していますが、あなたは質問をしなかったと思いますあなたは本当に答えが欲しかったのです。
Pythonコードをリファクタリングしようとしていますが、ツールがPythonを理解していない限り、誤検知と誤検知が発生します。つまり、そのインスタンスがvariable =
割り当てではなく、正規表現と一致しない割り当てが欠落していることを検出します。
Pythonにどのリファクタリングツールを使用していますか?にツールの部分的なリストがあります。「Pythonyour_editing_environmentのリファクタリング」を使用したより一般的な検索では、さらに多くの結果が得られます。
の前にオプションの空白を追加するだけです=
:
\w+(?=\s*=)
r'(.*)=.*'
同様にそれをします...
#1の後に#2が続き、#1が続き=
ます。
>>> re.findall(r'(.*)=.*', "I think Python=amazing")
['I think Python']
>>> re.findall(r'(.*)=.*', " I think Python = amazing oh yes very amazing ")
[' I think Python ']
>>> re.findall(r'(.*)=.*', "= crazy ")
['']
strip()
次に、リストにある文字列を返すことができます。
単語と の間の空白を許可する必要があります=
。
re.findall('\w+(?=\s*[=])', "I think Python = amazing")
等号の周囲の非キャプチャ グループの代わりに、単語の周囲のキャプチャ グループを使用して、式を単純化することもできます。
re.findall('(\w+)\s*=', "I think Python = amazing")
代わりにこれを使用してください
re.findall('^(.+)(?=[=])', "I think Python=amazing")
説明
# ^(.+)(?=[=])
#
# Options: case insensitive
#
# Assert position at the beginning of the string «^»
# Match the regular expression below and capture its match into backreference number 1 «(.+)»
# Match any single character that is not a line break character «.+»
# Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
# Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=[=])»
# Match the character “=” «[=]»