我正在寻找一个regexp公式,它可以找到以破折号开头,以破折号或点结尾的字符串,它的顺序是手动计算必须用破折号替换的情况。
例如,下面的文本:
-hi就在那里-你好-.如果你能来的话,看着窗子的时候感觉真好。-said。
需要替换为
-hi就在那里-你好-.-good早上,-he说。
但是这个破折号必须保持不变:
1992-1994 MTS-O
因为我不认为一个完全自动化的解决方案是可能的,所以我希望用一个regexp来代替这两个来加速手动审查:
-(.+?)-(.+?)
用一个匹配短划线或末尾一个点的,让我做一个快速替换,有条件地替换短划线,当它匹配时,或保留该点,如果匹配。
发布于 2019-06-27 07:46:34
也许你可以按照建议使用一个简单的模式。但这可能会导致一些边缘情况的问题。它需要更多一点来满足您的所有需求。
..a正则表达式,用于查找以短划线开头的字符串和以短划线或点结尾的。
但是,如果您想一气呵成,您可能需要这样的PCRE模式:Demo
(?=^-.*[.-]$)-|\G(?!^).*\K-
首先,使用lookahead验证整个字符串:(?=^-.*[.-]$)
。如果我们有匹配,我们就在位置1。
然后,我们寻找第一个短划线来替换它,然后是一个\G-continue替换,以匹配不在起始位置(?!^)
的后续短划线。我们跳到使用.*
的下一个-
,并使用\K
丢弃它之前的所有内容。很有趣,对吧?
一般来说,我建议使用两个正则表达式。首先查找/验证有问题的模式,然后进行替换。但在您的环境中,这可能不是一个选项。
发布于 2019-06-27 05:58:59
https://stackoverflow.com/questions/56781030
复制相似问题