我在这里遇到问题,我有以下字符串
@Novriiiiii yauda busana muslim @nencor haha. wa'alaikumsalam noperi☺
然后我使用这个正则表达式模式来选择所有字符串
\w+
但是,我需要选择所有字符串,除了前缀为@ like @Novriiiiii
或@nencor
的单词,这意味着我们必须排除@word的
我该怎么做?
PS。我正在使用regexpal来编译正则表达式。我想将正则表达式模式应用到雅虎管道正则表达式。谢谢
答案 0 :(得分:2)
你可以使用负面的lookbehind,这样如果一个单词前面有@
,它就会被排除在外。你还需要在单词之前使用单词边界,否则lookbehind只会影响第一个单词。
(?<!@)\b\w+
答案 1 :(得分:0)
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您不能像其他答案已经建议那样使用负面的后视,这是一种解决方法。
\w
已经与@
字符不匹配,所以您需要这样的内容:
[^@]\w+
但是这将(a)在字符串的开头不起作用,(b)在匹配中的单词之前包含字符。要修复(a),我们可以这样做:
(^|[^@])\w+
为了修复(b),我们将我们想要的部分括起来:
(^|[^@])(\w+)
然后使用$2
或\2
(取决于正则表达式方言)来引用匹配的单词。
答案 4 :(得分:0)
另一种选择是在单词中包含@
符号:
[\w@]+
然后在管道中添加另一个步骤,以过滤掉以@
开头的所有字词。
答案 5 :(得分:0)
这样做的方法是删除您不想要的单词。例如:
find: @\w+
replace: empty string
你获得没有 @abcdef 字样的文字。