簡體   English   中英

正則表達式中文字字符串的條件或

[英]Or condition for literal string in regex expression

我有以下正則表達式

re.findall('\(([0-9].*?)\)', a[a.find('('):].strip())

為像這樣的字符串定義

asdasdasd (21345-asdasdasd)

檢索括號內的內容,后跟數字。 但我也希望能夠檢索“ NA”字符串后面的內容,例如:

asdasdasd (NA-asdasdasd)

我試過了:

re.findall('\(([0-9].*?)\)|\((NA.*?)\)', a[a.find('('):].strip())

但產生一個元組。 會怎么樣 先感謝您!

當其中的文本以數字/ NA開頭,后跟-以及除()以外的任何其他字符時,您可以捕獲括號之間的子字符串

re.findall(r'\(((?:[0-9]+|NA)-[^)]*)\)', a)

參見regex演示

細節

  • \\( -一個(
  • ((?:[0-9]+|NA)-[^)]*) -捕獲組(此值將由re.findall返回):
    • (?:[0-9]+|NA) -1個或多個數字或NA
    • -連字符
    • [^)]* - 0+比其他字符)
  • \\) -a )字符。

參見Python演示

import re
strs = ['asdasdasd (21345-asdasdasd)', 'asdasdasd (NA-asdasdasd)']
for s in strs:
    print(re.findall(r'\(((?:[0-9]+|NA)-[^)]*)\)', s))

輸出:

['21345-asdasdasd']
['NA-asdasdasd']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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