質問: re.match(PATTERN_PHRASE, grep_txt_line) if result: # 適当な処理 # print(result.group()) except Exception as e: messageWindow(LEVEL_ERROR, LEVEL_ERROR, e) ``` 一応、以下の正規表現のパターンを使用すれば.xlsxと.xlsは検出できますが、不必要な文字列までくっついてくるのであまり意味を成していません。 ``` .*(\.xlsx|\.xls) ``` Pythonの正規表現を利用している方でこのような事象にあった方はおられますか? それとも、私の正規表現パターンがよろしくないのでしょうか。 2020/08/20 追記 grep_fileの内容は以下の通りです。 foobar.batはn個存在しており、その全てを正規表現検索することが目的です。 foobar.batは単純にExcelファイルを特定の場所からローカルへコピーするだけのものです。 バッチ特有の処理が記述されていますが、主に検索したい文字列は.xlsxや.xlsを持つファイル名(フルパス)です。 **foobar.bat** ``` rem バッチ特有の何らかをごにょごにょする処理 copy //△△/../../../../../foobar1.xlsx C://□□/../../printOut/foobar1.xlsx /y copy //××/../../../foobar2.xlsx C://□□/../../printOut/foobar2.xlsx /y ```
回答: `re.match` を `re.search` に変えると上手く動くと思います。 パターンが `\s` で始まっていて `re.match` を使った場合、行が空白で始まる場合だけマッチします。`re.search` はパターンに当てはまる部分文字列を探します。