之前可能会问过这个问题,但我无法找到问题的这个特定版本。
我想匹配括号内的所有内容,这本身很容易。但我的问题是括号内的文本可以有嵌套的括号和包含括号的文本字符串!
Look at this example:\((.*)\)
('1KtxNawkosV1H5jzUzW_$1'),#38,'2ndLevel', '2a',#251524,#251773,#328411,.PHYSICAL.,.EXTERNAL.
'1KtxNawkosV1H5jzUzW_$1',#38,'2ndLevel', '2a',#251524,#251773,(#328411,.PHYSICAL.,.EXTERNAL.)
('1KtxNawkos(asd)V1H5jzU)zW_$1', ('asd', #23331), #21)<-- ###should end here###,#38,'2ndLevel',
'2a',#251524,#251773,#328411,.PHYSIaCAL.,.EXTERNAL., ')'
#38,'2ndLevel',('1KtxNawkos(asd)V1H5jzU)zW_$1') '2a',#251524,#251773,#328411,.PHYSICAL.,.EXTERNAL.
它几乎可以满足我的需求,但在第三个例子中失败了。
它应该基本上省略内部括号(在本例中为单引号)并找到最匹配的括号。
为了使其有效,我需要更改什么?
谢谢!
答案 0 :(得分:0)
你在使用正则表达式时遇到问题的#3的问题是你在括号中有一个嵌套表达式,它不包含在字符串中。我知道你想忽略字符串中的括号,这对于正则表达式来说是好的和可行的,但在#3中并非如此。
您提出的正则表达式将匹配第一个'('后跟最接近的')'到下一个换行符和其间的所有内容,包括其他')'是否在引号内。如果要在单引号字符串中排除括号,请考虑合并以下模式:
'[^']*'
即单引号,后跟除引号之外的任何内容(包括换行符和括号,后跟单引号。
我希望这有点帮助。