采用此字符串
bob.ted.dave.allan :: james.fred:hello.dave
我需要用#替换每次出现的。,直到我碰到一个单数“:”,而不是停在命名空间“ ::”上,而只是停在“:”上
因此在上面的字符串中,最终结果将是 bob#ted#dave#allan :: james#fred:hello.dave
当前,我有[。]匹配字符串中的所有点,但无法使其锚定在单个“:”上
答案 0 :(得分:1)
如果您想要一个纯正则表达式解决方案,则只能使用可变宽度的后向模式来完成,只有少数正则表达式引擎支持这种模式:
allprojects {
repositories {
maven { url 'https://maven.google.com' }
google()
maven { url "https://jitpack.io" }
jcenter()
}
}
演示:https://de.wordpress.org/plugins/woocommerce-auto-added-coupons/
或者如果总是会有一个冒号,则可以改用正向超前模式:
(?<!(?<!:):(?!:).*)\.
答案 1 :(得分:0)
您可以捕获整个字符串,直到具有简单字符集匹配的单个:
:
[\w\. :]+(?::{1})
然后对捕获的字符串中的所有.
进行替换。
答案 2 :(得分:0)
我只想停在一个.
上,然后停下来,直到看到一个正好:
[.](?=.*:{1})
将工作。
如果一行上有多个:
,则此操作无效。