私はこのような文字列がある場合:Regexを使用して単純な文字列をマッチングしますか?
*select 65* description
私はアスタリスクとPythonで正規表現を使用して番号の後にビットを抽出可能性がどのように?上記の文字列からselect
と65
が得られるものが必要です。
それらのすべては、この規則に従ってください:あなたは、この正規表現を使用でき
*[lowercase specifier] [integer]* description
私はこのような文字列がある場合:Regexを使用して単純な文字列をマッチングしますか?
*select 65* description
私はアスタリスクとPythonで正規表現を使用して番号の後にビットを抽出可能性がどのように?上記の文字列からselect
と65
が得られるものが必要です。
それらのすべては、この規則に従ってください:あなたは、この正規表現を使用でき
*[lowercase specifier] [integer]* description
:Pythonで
^\*([a-z]+)\s+([0-9]+)\*
を、あなたはthe re
moduleで正規表現を一致させることができます。このように:あなたがしたい一致の数に応じて、
import re
my_string = """*select 65* description"""
match = re.match(r"^\*([a-z]+)\s+([0-9]+)\*", my_string)
specifier = match.group(1)
integer = int(match.group(2))
import re
、その後
m = re.match(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)", "*select 65* description")
print m.groups()
または
r = re.compile(r"^\*([a-z]+)\s+([0-9]+)\*\s+(.*)")
m = r.match("*select 65* description")
print m.groups()
のいずれか。正規表現は複数回の実行に適した形式でコンパイルされているため、前者は1つまたは複数の一致に適しています。
ああ、申し訳ありませんが、あまりにも。 icktoofayが書いたように、あなたが説明に興味がないので、使用する正規表現は 'r \^*([a-z] +)\ s +([0-9] +)\ *" 'となります。 – glglgl
Pythonの正規表現ライブラリは強力ですが、私は軽量の問題のためのスプリット()を使用しての個人的に好きだ:指定した正規表現は、1つまたは複数の空白文字(スペース、タブと一致することを
>>> s = "*select 65* description"
>>> s.split('*')
['', 'select 65', ' description']
>>> s.split('*')[1].split()
['select', '65']
おそらく、これは "小文字の指定子"が実際に小文字であるか、または "整数"部分が実際に整数であるかを検証しないので、余分なエラーチェックを実行する必要があります。 –
正規表現を使用しない場合+1。他の簡単な解決策がある場合、正規表現を使用しないでください。 – Dominik
注意を)を "小文字の指定子"と "整数"セクションの間に挿入します。一致が厳密でなければならない場合は、 '\ s +'部分を置き換えて実空間文字を入れます。 –