正規表現を使用してPythonの文字列から単語としてフェッチする方法[重複]
Nov 25 2020
私は次のような文字列を持っています
string = "Status\t\t: PASS"
この文字列からPASSのみをフェッチしたいので、この正規表現を使用しています。
value = re.findall("Status" + r'(.*)', string)
しかし、それは私にこれを返します
" : PASS"
正規表現で余分な文字スペースタブなどをすべて無視したいのですが、どうすればよいか教えてください。
回答
3 VivekKumar Nov 25 2020 at 13:36
メソッド:regex()+ string.punctuationを使用するこのメソッドも正規表現を使用しましたが、すべての句読点を取得する文字列関数を使用して、すべての句読点を無視し、フィルター処理された結果文字列を取得します。
# Python3 code to demonstrate
# to extract words from string
# using regex() + string.punctuation
import re
import string
# initializing string
test_string = "Geeksforgeeks, is best @# Computer Science Portal.!!!"
# printing original string
print ("The original string is : " + test_string)
# using regex() + string.punctuation
# to extract words from string
res = re.sub('['+string.punctuation+']', '', test_string).split()
# printing result
print ("The list of words is : " + str(res))
出力:
The original string is : Geeksforgeeks, is best @# Computer Science Portal.!!!
The list of words is : [‘Geeksforgeeks’, ‘is’, ‘best’, ‘Computer’, ‘Science’, ‘Portal’]
2 tshiono Nov 25 2020 at 14:25
次のことを試してください。
import re
string = "Status\t\t: PASS"
m = re.search(r'Status\s*:\s*(.*)', string)
print(m.group(1))
出力:
PASS
正規表現の説明Status\s*:\s*(.*)
:
Status\s*
部分文字列「Status」とそれに続く空白文字があれば、可能な限り一致します。:\s*
文字「:」とそれに続く空白文字があれば、できるだけ多く一致します。(.*)
残りの部分文字列と一致し、キャプチャグループ1が割り当てられます。
1 Heo Nov 25 2020 at 14:23
これを試してください:regex-demo
Python-ソース:
import re
input1 = "Status\t\t: PASS"
input2 = "Status\t\t: PASS hello"
input3 = "Status\t\t: FAIL hello world"
regex=re.compile('status\s*:\s*(\w+)',flags=re.IGNORECASE)
print(f'result of input1: \n {regex.findall(input1)}')
print(f'result of input2: \n {regex.findall(input2)}')
print(f'result of input3: \n {regex.findall(input3)}')
出力:
result of input1:
['PASS']
result of input2:
['PASS']
result of input3:
['FAIL']