我创建了以下正则表达式模式,试图匹配长度为6个字符的字符串,以"PRI"或"SEC"结尾,除非string ="SIGSEC".例如,我想匹配ABCPRI,XYZPRI,ABCSEC和XYZSEC,但不匹配SIGSEC.
(\w{3}PRI$|[^SIG].*SEC$)
Run Code Online (Sandbox Code Playgroud)
这是非常接近和一些工作(如果我传入"SINSEC",它返回"NSEC"的部分匹配),但我对它的当前形式没有很好的感觉.此外,我可能需要在"SIG"之后添加更多排除项,并意识到这可能不会扩展得太好.有任何想法吗?
顺便说一句,我在C#中使用System.Text.RegularExpressions.Regex.Match()
谢谢,Rich
什么是我应该使用的RegEx模式,以匹配不在另一个特定单词之后的特定单词?
例如:
我正在寻找"xyz"之后没有的"abc",所以以下内容将匹配:
xxabc
p abc
Run Code Online (Sandbox Code Playgroud)
以下不会:
xyz abc
Run Code Online (Sandbox Code Playgroud)
谢谢!
我是正则表达式的相对新手(尽管我已成功使用它们多次).我想在文档中找到所有不以".html"结尾的链接我提出的正则表达式是:
href=\"([^"]*)(?<!html)\"
Run Code Online (Sandbox Code Playgroud)
在Notepad ++中,我的编辑器href=\"([^"]*)\"找到所有链接(包括以"html"结尾的链接和不以"html"结尾的链接).为什么不负面的背后工作呢?
我也尝试过前瞻:
href=\"[^"]*(?!html\")
Run Code Online (Sandbox Code Playgroud)
但那也不起作用.
有人可以帮忙吗?
干杯,gro ..
>>> d = "Batman,Superman"
>>> m = re.search("(?<!Bat)\w+",d)
>>> m.group(0)
'Batman'
Run Code Online (Sandbox Code Playgroud)
为什么组(0)不匹配超人?这个外观教程说:
(?<!a)b匹配一个前面没有"a"的"b",使用负后看
\b\w+(?<!s)\b.这绝对不一样\b\w+[^s]\b.适用时Jon's,前者将匹配Jon后者Jon'(包括撇号).我会留给你弄清楚原因.(提示:\ b匹配撇号和s).后者也不会匹配像"a"或"I"这样的单字母单词.
你能解释一下原因吗?
此外,你能说清楚exacly \b做了什么,以及为什么它在撇号和s?之间匹配?
我需要javascript正则表达式,它将匹配空格字符后面没有字符并且前面有@的单词,如下所示:
@bug - 找到"@bug",因为它没有空间
@bug和我 - 因为"@bug"之后有空格而一无所获
@bug和@another - 只找到"@another"
@bug和@another等等 - 找不到任何东西,因为这两个单词后跟空格.
救命?补充:从中获取字符串,FF在其末尾放置自己的标记.虽然我基本上只需要以@开头的最后一个单词,但是$(结束字符串)不能使用.
试图在正则表达式处理中包围前瞻和后视.
假设我有一个列出PID和其他内容的文件.我想构建一个正则表达式来匹配PID格式\ d {1,5},但这也排除了某个PID.
$myself = $$;
@file = `cat $FILE`;
@pids = grep /\d{1,5}(?<!$myself)/, @file;
Run Code Online (Sandbox Code Playgroud)
在这个正则表达式中,我尝试使用(?<!TO_EXCLUDE)构造使用负面后视将数字匹配与排除组合.这不起作用.
样本文件:
456
789
4567
345
22743
root
bin
sys
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我正确的方向,我将不胜感激.
也有兴趣了解这种负面观察是否会在这种情况下最有效.
我知道有各种解决办法,但似乎奇怪的是JavaScript中没有一个非常常见/有用的正则表达式功能.
是否有任何理由(性能问题,实施问题等)或者是否在开始时没有添加,现在为时已晚/不需要?
javascript regex negative-lookbehind missing-features lookbehind
我有这些字符串(分别检查每一行):
adminUpdate
adminDeleteEx
adminEditXe
adminExclude
listWebsite
listEx
Run Code Online (Sandbox Code Playgroud)
现在我想匹配任何以(admin但不结束)开头但不结束的内容Ex(不区分大小写)
因此在应用正则表达式之后我必须匹配:
adminUpdate
adminEditXe
adminExclude
Run Code Online (Sandbox Code Playgroud)
我当前的正则表达式是,/^admin[a-z]+(?!ex)$/gi但它匹配任何开头admin
我正在努力处理旧的“格式化”代码,其中添加了大量空格来排列 = 等:
if (!This.RevData.Last().Size() eq 0) then
!DocRev = '?'
!Status = '?'
!RevCode = '?'
else
!Pad = !This.RevData.Last()[1]
!DocRev = !Pad[2]
!Status = !This.GenUtil.If((!Pad[3] eq 'UA'), '' , !Pad[3])
!RevCode = !This.GenUtil.If((!Pad[6] eq '' ), '?', !Pad[6])
endif
Run Code Online (Sandbox Code Playgroud)
在这个例子中,它实际上是有一定意义的,但大多数情况下,代码已被修改为一种状态,使空白更加混乱而不是有用。
我想做的是将所有双(或更多)空格替换为单个空格,但我当然希望保留缩进。因此,我正在寻找一个正则表达式来识别不在行开头的双(或更多)空格。我尝试过否定lookbehind,但似乎无法使其工作:
(?<![\n])[\s]{2,}
Run Code Online (Sandbox Code Playgroud)
有什么提示吗?哦,我正在使用 Ultraedit(Perl 正则表达式引擎),因此正则表达式应该是“UE 兼容的”。
编辑:UE不会逐行评估正则表达式的行;换行符只是文档长字符串中的一个字符,这使问题变得有点复杂。
regex code-formatting negative-lookbehind removing-whitespace