2017-10-31 8 views
1

それに一致するグループと一致していないか:Pythonの正規表現は、私は、文字列にマッチさせたい

文字列から文字列

として、それはしてもしなくてもよいasが含まれていてもよいです。

私が持っている現在のコードは

r'(?ix) from [a-z0-9_]+ [as ]* [a-z0-9_]+' 

である。しかし、このコードは、単一のaまたはsと一致します。したがって、from string a littleのようなものも結果に含まれます。

これを行う正しい方法は何か不思議です。

+0

「文字列文字列から数値にする」ことができますか? – RomanPerekhrest

+0

'from string something'はどうですか? – ctwheels

+0

私の質問@ctwheelsを改訂してくれてありがとう、私は 'this'のようなインラインコードを挿入する方法を知らなかった。こんにちは@RomanPerekhrest、いいえ、 'from'と' as'の間には 'string'しかなく、' as'があれば 'string string'から来ます。 – piA2

答えて

1

あなたはx「冗長」(フリースペース)修飾子を使用して、あなたのパターン内のすべてのスペースがreエンジンがとき省略という空白を書式設定になっていることregex demo

注を参照してください

(?i)from\s+[a-z0-9_]+\s+(?:as\s+)?[a-z0-9_]+ 

を使用することができますパターンを解析します。したがって、私は\s+を使用して、1つ以上の空白にマッチさせることをお勧めします。単一の通常のスペースを本当に使いたい場合は、x修飾子を省略し、通常のスペースを使用してください。あなたはコメントを挿入するx修正が必要な場合は、定期的なスペースをエスケープ:

また
r'(?ix) from\ [a-z0-9_]+\ (?:as\)?[a-z0-9_]+' 

は、文字のシーケンスを一致させるために、あなたは文字クラスではなく、グループ化構文を使用する必要があります。ここで、(?:as\s+)?は、as +スペース部分文字列の1回または0回の出現と一致するオプションの非キャプチャグループを定義します。

+0

これは私の日@WiktorStribiżewを保存します。たぶん '[]'は、角括弧の中のスペースで、 '\'と同じです。つまり、バックスラッシュとスペースの後にあります。 '[] +'と '\ +'はどうでしょうか?彼らは同じですか? – piA2

+0

@ piA2:文字クラスの中の空白はPythonの 're'によって意味のある文字として扱われます(Java regexライブラリとは異なります)。 [このデモ](https://ideone.com/gLN86D)を参照してください。したがって、 '[] +'と '' + + ''はPythonの 're'で等しくなります。 –

関連する問題