簡體   English   中英

Python:如何打印正則表達式匹配的字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM