我正在尝试使用正则表达式匹配所有逗号(后面跟着一个空格)
目标字符串是
因此,我可以将
为此,仅使用正则表达式似乎很难。是否有其他方法解决这个问题?
我正在使用以下正则表达式:
虽然如果匹配以下字符串,它将匹配正确的逗号(分别是第一个):
更多详细信息请参见此链接: https://regex101.com/r/g8DOh6/1
,
,这些逗号不在任何括号或方括号内,即逗号不能包含在括号或方括号中。目标字符串是
A, An(hi, world[hello, (hi , world) world]); This, These
。在这种情况下,它应该匹配第一个逗号和最后一个逗号(即A
和An
之间的逗号以及this
和these
之间的逗号)。因此,我可以将
A, An(hi, world[hello, (hi , world) world]); This, These
分成A
,An(hi, world[hello, (hi , world) world]); This
和These
,不会导致括号/方括号不平衡。为此,仅使用正则表达式似乎很难。是否有其他方法解决这个问题?
我正在使用以下正则表达式:
, (?![^()\[\]]*[\)\]])
但是,这个表达式将匹配其他两个额外的逗号,
(第二个和第三个),它们不应该被匹配。虽然如果匹配以下字符串,它将匹配正确的逗号(分别是第一个):
A, An(hi, world)
和A, An[hi, world]
但是,如果括号和方括号相互包含,将会有问题。更多详细信息请参见此链接: https://regex101.com/r/g8DOh6/1
Text::Balanced
可以提取平衡的括号/方括号和其他内容,然后从“其他内容”中挑选逗号。 - zdimhello(D,) world
转换为hello world
。然而,本文并不是关于这个最终步骤的。它更多地是为最后一步做准备。 - jonah_wRegexp::Common
)可以更容易地达到那个“最终步骤”,因为它恰好匹配那些(...)
。你想要吗?这就是我现在回答中的内容... - zdim