RegEx匹配和替换语法单词(v,n,adv,adj)

时间:2014-11-25 12:49:34

标签: regex

我需要匹配工作“v”,“n”,“adv”,“adj”并将它们替换为 v 等。

如果它们是在大括号(...)之间或斜杠/.../之间写的,我需要匹配它们。 他们最后可能会有一些垃圾符号,如, ;等。

所以我想说:

abrasion n
air (v)
big /adj/

我需要这个结果:

abrasion <i>n</i>
air (<i>v</i>)
big /<i>adj</i>/

我目前正在使用此RegEx:

(?!(\B|\s|\/|\())(n|v|adj|adv)(?=(\s|$|\/|,|;|\)))

但它失败了。我一直得到这样的结果:

abrasio<i>n</i>

3 个答案:

答案 0 :(得分:1)

使用字边界\b

正则表达式:

\b(ad[vj]|[vn])\b

替换字符串:

<i>$1</i>

DEMO

答案 1 :(得分:1)

这可能适合你:

\b([nv]|ad[jv])\b

虽然它匹配的情况多于不需要的情况,但它不太可能匹配您不想匹配的任何内容。

替换为<i>\0<\i> - \0整个匹配。

答案 2 :(得分:0)

搜索:(?<=\W)(v|n|adv|adj)(?=\W)

替换为:<i>\1</i>

这似乎有效:

http://regex101.com/r/tD9lC0/1