[英]Regular expression to match a specific pattern
我有以下字符串:
s = "<X> First <Y> Second"
我可以在<X>
和<Y>
之后匹配任何文本(在這種情況下是“第一”和“第二”)。 這就是我已經做到的:
import re
s = "<X> First <Y> Second"
pattern = r'\<([XxYy])\>([^\<]+)' # lower and upper case X/Y will be matched
items = re.findall(pattern, s)
print items
>>> [('X', ' First '), ('Y', ' Second')]
我現在試圖匹配的是沒有<>
的情況:
s = "X First Y Second"
我試過這個:
pattern = r'([XxYy]) ([^\<]+)'
>>> [('X', ' First Y Second')]
不幸的是,它沒有產生正確的結果。 我究竟做錯了什么? 我想匹配 X 或 x 或 Y 或 y 加上一個空格(例如“X”)。 我怎樣才能做到這一點?
編輯:這也是一個可能的字符串:
s = "<X> First one <Y> Second <X> More <Y> Text"
輸出應該是:
>>> [('X', ' First one '), ('Y', ' Second '), ('X', ' More '), ('Y', ' Text')]
編輯2:
pattern = r'([XxYy]) ([^ ]+)'
s = "X First text Y Second"
產生:
[('X', 'First'), ('Y', 'Second')]
但它應該是:
[('X', 'First text'), ('Y', 'Second')]
怎么樣: <?[XY]>? ([^<>XY$ ]+)
<?[XY]>? ([^<>XY$ ]+)
javascript中的示例:
const re = /<?[XY]>? ([^<>XY$ ]+)/ig console.info('<X> First <Y> Second'.match(re)) console.info('X First Y Second'.match(re))
如果您知道要匹配哪個空白字符,則可以將其添加到您的表達式中。 如果你想匹配任何空格,你可以使用 \\s
pattern = r'\<([XxYy])\>([^\<]+)'
那么將是
pattern = r'\<([XxYy])\>\s([^\<]+)'
始終記住 () 中的表達式將作為您的結果返回。
假設要匹配的空白標記是單個空格字符,則模式為:
pattern = r'([XxYy]) ([^ ]+)'
所以我想出了這個解決方案:
pattern = r"([XxYy]) (.*?)(?= [XxYy] |$)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.