问问题
1405 次
6 回答
2
你可以使用否定的lookbehind,这样如果一个词在它前面,@
它就会被排除在外。您还需要在单词之前有一个单词边界,否则后视只会影响第一个字符。
(?<!@)\b\w+
于 2013-05-19T14:38:07.333 回答
0
于 2013-05-19T14:43:03.053 回答
0
如果您不能像其他答案已经建议的那样使用否定的lookbehind,这里有一个解决方法。
\w
已经不匹配@
字符,所以你想要这样的东西:
[^@]\w+
但这将 (a) 在字符串的开头不起作用,并且 (b) 在匹配中包含单词之前的字符。要修复 (a),我们可以这样做:
(^|[^@])\w+
为了修正 (b),我们用括号括住我们想要的部分:
(^|[^@])(\w+)
然后使用$2
或\2
(取决于正则表达式方言)来指代匹配的单词。
于 2013-05-19T14:44:10.690 回答
0
于 2013-05-19T14:39:49.173 回答
0
一种方法是删除您不想要的单词。例子:
find: @\w+
replace: empty string
您获得没有@abcdef字样的文本。
于 2013-05-19T15:11:42.603 回答
0
另一种选择是@
在单词中包含符号:
[\w@]+
然后在您的管道中添加另一个步骤以过滤掉所有以@
.
于 2013-05-19T14:47:22.970 回答