2

我正在尝试用以下内容替换所有出现的.__with__.-with -

article.__authors.__item ...会成为... article__authors__item

...和...

bucket.__water.-half ...会成为... bucket__water-half

我从这.__部分开始并想出了\b\.__\b我的正则表达式,但http://gskinner.com/RegExr/似乎不喜欢它......

这适用于第二场比赛\b\.-\b

有没有更好的办法?

干杯,尼克

4

2 回答 2

6

我会删除\bs ,除非你希望你的正则表达式只匹配有单词边界的地方。

由于您的正则表达式现在是,它会在其中找到模式,article.__ authors但不会在其中找到模式,article.__authors因为and\b之间没有_a

它也将无法找到模式,.__ authors因为\b在该期间之前没有。

\.__会很好用

它与您的连字符一起使用的原因是因为_被认为是 a 的合法字符,word但 a-不是。所以-a之前有一个词边界a,但_a没有

http://rubular.com/r/cgT1bD7o0d

于 2013-06-06T16:39:37.780 回答
2

所以你真正想要做的是删除一个前面有一个字母数字字符,后面跟着一个破折号或两个下划线的点?然后你可以使用积极的前瞻断言来做到这一点:

搜索\b\.(?=__|-)并替换为空字符串。

如果您还想确保下划线/破折号后跟有另一个字母数字字母,您可以:

搜索\b\.(?=__(?=[A-Za-z0-9])|-\b)并替换为空字符串。

于 2013-06-06T18:39:48.293 回答