[英]Python: How to print a regex matched string?
我想匹配字符串的一部分(一個特定的單詞)並打印出來。 正是grep -o
作用。 我的話就是“黃狗”,它可以在一個跨越多行的字符串中找到。
[34343] | ****. "Example": <one>, yellow dog
tstring0 123
tstring1 456
tstring2 789
讓我們試試這個正則表達式mydog = re.compile(', .*\\n')
然后if mydog.search(string):
只打印匹配的單詞。
如何在輸出中只獲得“黃狗”?
使用捕獲組並查找:
>>> import re
>>> s = """[34343] | ****. "Example": <one>, yellow dog
... tstring0 123
... tstring1 456
... tstring2 789"""
>>> mydog = re.compile(', (.*)\n')
>>> mydog.findall(s)
['yellow dog']
如果您只想要第一場比賽,那么:
>>> mydog.findall(s)[0]
'yellow dog'
注意:當s
不包含匹配項時,您需要處理IndexError
。
如果未指定捕獲組,則整個表達式匹配的文本將包含matchResult.group(0)
。 在你的情況下,這將是', yellow dog\\n'
。 如果你只想要yellow dow
,你應該在表達式中添加一個捕獲組: , (.*?)\\n
。 請注意,我還將.*
更改為.*?
所以它會非貪婪並在找到第一個換行符時停止。
>>> s = '''[34343] | ****. "Example": <one>, yellow dog
tstring0 123
tstring1 456
tstring2 789'''
>>> mydog = re.compile(', (.*?)\n')
>>> matchResult = mydog.search(s)
>>> if matchResult:
print(matchResult.group(1))
yellow dog
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.