我如何用正则表达式做到这一点?
我想匹配这个字符串: -myString
但我不想匹配-myString此字符串:--myString
myString当然是什么.
它甚至可能吗?
编辑:
这里有一些关于我到目前为止所得到的信息,因为我发布了一个问题:
string to match:
some random stuff here -string1, --string2, other stuff here
regex:
(-)([\w])*
Run Code Online (Sandbox Code Playgroud)
此正则表达式返回我3场比赛:
-string1,-和-string2
理想情况下,我希望它只返回我的-string1比赛
我试图找出一个匹配文件路径字符串的正则表达式模式,其中名为"cmd.exe"的文件不在"System32"文件夹或其任何子文件夹中.
模式应与此匹配:
C:\Tools\calc.exe
Run Code Online (Sandbox Code Playgroud)
但不是这个:
C:\Windows\System32\calc.exe
C:\Windows\System32\De-de\calc.exe
Run Code Online (Sandbox Code Playgroud)
我尝试了背后的负面看法:
(?<![Ss]ystem32)\\calc\.exe
(?<![Ss]ystem32).*\\calc\.exe
(?<![Ss]ystem32[.*])\\calc\.exe
Run Code Online (Sandbox Code Playgroud)
但迄今为止没有任何工作.有人看到我的错误吗?
您可以在此处查看我的示例并自行尝试:http: //rubular.com/r/syAoEn7xxx
谢谢你的帮助.
我有一些JSON代码,格式如下:
[
{ "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
{ "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi "NAME" jk" },
...
]
Run Code Online (Sandbox Code Playgroud)
我需要在"NAME"中的引号前添加反斜杠才能正确解析此JSON.所以我需要上面的字符串看起来像这样:
[
{ "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
{ "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi \"NAME\" jk" }, …Run Code Online (Sandbox Code Playgroud) 像"馅饼"这个词之类的东西之前没有"披萨"这个词.我对正则表达式相当新,这个问题一直给我带来麻烦.
如果您可以使用JavaScript正则表达式语法提供答案,那么我会非常感激.
编辑:我可能通过在两个单独的正则表达式中单独搜索字符串'pizza pie'和'pie'来复制功能,并且只计算出现在第二个查找但不是第一个查找中的字符串索引.这是一个复杂的解决方案,不是那么快,但可以很容易多线程,所以我想它没关系.
我有一个字符串,我想替换所有不跟随/跟随任何其他i的'i',并将其替换为'z`.我知道有负面的前瞻和后视.
结果应该是:
i => z
iki => zkz
iiki => iikz
ii => ii
iii => iii
Run Code Online (Sandbox Code Playgroud)
我试着用这个:
/(?<!i)i(?!i)/gi
Run Code Online (Sandbox Code Playgroud)
它失败并抛出一个错误:Invalid regex group.
然而
/i(?!i)/gi
Run Code Online (Sandbox Code Playgroud)
工作正常,但匹配第二个"我":"ii".
还有其他方法吗?
如果有的话,对JS中的lookbehind的支持是什么?
所以,我在vim中进行搜索:
/\(\(unum\)\|\(player\)=\)\@<!\"1\"
Run Code Online (Sandbox Code Playgroud)
并且正如预期的那样,它与以下行不匹配:
player="1"
Run Code Online (Sandbox Code Playgroud)
但匹配有以下行:
unum="1"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?所有这一切都不是要被否定的原子:\(\(unum\)\|\(player\)=\)
自然只是做:/\(\(unum\)\|\(player\)=\)匹配unum=或player=.
我想从下面的字符串中找到(test)字符串的字符串位置(既不以for或or开头):
• <test>* (for test) (or test) (test)
Run Code Online (Sandbox Code Playgroud)
是否可以使用断言后面的负面查找来找到特定的字符串?我正在使用这个正则表达式,但我错过了一些东西:
m_comments = re.search('(?<!\(for)|(?<!\(or)', line)
Run Code Online (Sandbox Code Playgroud)
还可以在断言后面结合使用或声明吗?
注意:test可以是任何可能的字符串:
<an other eg> (for another test) (or with this) (anything)
Run Code Online (Sandbox Code Playgroud)