Regular Expression: match only non-repeated occurrence of a character
我需要找到并替换字符串中所有出现的撇号字符,但前提是这个撇号后面没有另一个撇号。
那就是
abc'def
是一场比赛
abc''def
不是一场比赛。
我已经制定了一个工作模式——
谢谢,
瓦莱里
取决于您的环境-如果您的环境支持前瞻性和前瞻性,您可以这样做:
参考:http://www.regular-expressions.info/lookaround.html
你必须注意不均匀的撇号:
1 | abc'''def |
如果你想替换第三个,把第一个和第二个留在那里。
您可以这样做(假设您已经匹配了字符串文本,并且只想替换编号不均匀的尾随撇号):
搜索模式:
1 | (('')*)' |
换成
1 | $1 |
第1组:偶数的撇号(或者根本没有撇号)。
我不确定您要解决的实际问题是什么,但是如果您正在分析/读取一个csv文件,或者一个字符串,有类似csv输入,我强烈建议使用一个体面的csv解析器。几乎所有语言都以某种形式存在。
我认为你的图案简短而精确。你可以使用负向前看/向后看,但它们会使情况复杂得多。可维护性很重要。
看这里,长相的埃多克斯1〔0〕。
(?=pattern) 是一个积极的前瞻性断言。(?!pattern) 是一种消极的前瞻性断言。(?<=pattern) 是一个积极的背后观点。(?是一个否定的背后论断。
http://www.regular-expressions.info/lookaround.html工作演示