正则表达式中是否存在某种转义序列或字符,指定不应在模式中的此处找到特定字符?
例如,如果我想匹配一个字符串,该字符串具有C风格的转义序列但不是文字反斜杠的特定转义序列(应该匹配"Hello\tWorld"
而不是"Hello\\World"
)那么我该怎么写正则表达式,以便它匹配任何'\'但不是如果只跟着另一个'\'?
感谢。
答案 0 :(得分:1)
由于您没有指定语言,因此这是一个执行此任务的perl脚本:
#!/usr/bin/perl
use strict;
use warnings;
use 5.10.1;
my @l = ("Hello\tWorld", "Hello\\World");
for(@l) {
say /^.*?\\(?!\\).*$/ ? "$_ -> KO" : "$_ -> OK";
}
<强>输出:强>
Hello World -> OK
Hello\World -> KO
<强>解释强>
/ : start regex
^ : begining of the line
.*? : any number of any char (not greedy)
\\ : backslash
(?! : negative look ahead
\\ : backslash
) : end of negative look ahead
.* : any number of any char
$ : end of line
/
答案 1 :(得分:0)
在大多数正则表达式语法中,您可以使用^
定义反向字符类,例如除了[^a]
之外,a
匹配任何内容。
答案 2 :(得分:0)
我认为几分钟前刚问过一个非常相似的问题,请查看它是否对您有所帮助:PHP regex to find non-espaced letters
来自链接的正则表达式:(?<!\\\)F
可能的正则表达式:(?<!\\\)[tnr]
匹配\ n,\ t或\ r \ n