簡體   English   中英

在可能的多個括號中查找字符串?

[英]Find string in possibly multiple parentheses?

我正在尋找一個正則表達式,它區分包含括號內數值的字符串和包含括號外的字符串。 問題是,括號可能會相互嵌入:

因此,例如表達式應該匹配以下字符串:

  • 嘿(例子1)
  • 也(這個(onetoo2(硬)))
  • 但是(這里(是(一個(更難)一個)maybe23)嘿嘿)

但它不應符合以下任何一項:

  • 這(一)是22誤導
  • how(to(go)on)with(multiple)3parent(heses(around))

到目前為止我已經嘗試過

\\d[A-Za-z] \\)

和像這樣簡單的事情。 這個問題是它與示例 2 不匹配,因為它后面有一個 ( 字符串。

我怎么能解決這個問題?

問題不是模式匹配之一。 這意味着正則表達式不是用於此的正確工具。

相反,您需要詞法分析和解析。 許多庫可用於該工作

您可以嘗試parsingpyparsing庫。

這些類型的正則表達式並不總是那么容易,但有時可以想出一種方法,只要輸入保持一定的一致性。 通常這樣的模式應該可以工作:

(.*(\([\d]+[^(].*\)|\(.*[^)][\d]+.*\)).*)

代碼

import re

p = re.compile(ur'(.*(\([\d]+[^(].*\)|\(.*[^)][\d]+.*\)).*)', re.MULTILINE)

result = re.findall(p, searchtext)
print(result)

結果

https://regex101.com/r/aL8bB8/1

暫無
暫無

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

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