我正在尝试将所有.__
的{{1}}替换为__
,将.-
替换为-
,所以请执行以下操作:
article.__authors.__item
...会成为...
article__authors__item
...和...
bucket.__water.-half
...会成为...
bucket__water-half
我从.__
部分开始,并提出\b\.__\b
作为我的正则表达式,但http://gskinner.com/RegExr/似乎不喜欢它...
这适用于第二场比赛\b\.-\b
有更好的方法吗?
干杯, 尼克
答案 0 :(得分:6)
除非您希望正则表达式只匹配有字边界的位置,否则我会删除\b
。
正如你的正则表达式现在一样,它会在article.__ authors
中找到模式,但在article.__authors
中找不到,因为\b
和_
之间没有a
它也无法找到.__ authors
中的模式,因为在此期间之前没有\b
。
\.__
可以正常使用
它与您的连字符一起使用的原因是因为_
被视为word
的合法字符,但-
不是-a
。因此a
在_a
之前有一个单词边界,但{{1}}不是
答案 1 :(得分:2)
那么你真正想要做的是删除一个前面有字母数字字符后跟一个破折号或两个下划线的点?然后,您可以使用positive lookahead assertions:
执行此操作搜索\b\.(?=__|-)
并替换为空字符串。
如果您还想确保在下划线/短划线后面跟着另一个字母数字字母,您可以:
搜索\b\.(?=__(?=[A-Za-z0-9])|-\b)
并替换为空字符串。