我研究了一段时间,还没有找到匹配以下模式的线索(不过,我对regex也很陌生),它看起来像
/abc/foo/bar(/*)
或
/abc/foo/bar/stop
所以我想将上面的字符串匹配并捕获为/abc/foo/bar。现在,“/stop”是一个可选字符串,可以附加在模式的末尾。目标是获得所需的捕获,同时忽略“stop”(如果“stop”存在多次,则在第一个“stop”处停止),同时允许在中间设置尽可能多的斜线(行尾的斜线除外)。
^(/.*[^/])/*$
/abc/foo/bar
/abc/foo/bar/
/abc/foo/bar///
/abc/foo/bar/stop
/abc/foo/bar/stop/foo/bar/stop/stop
/abc/foo/bar//stop
但它与以下任何项都不匹配:
/abc/foo/bar/sto (will match the whole "/abc/foo/bar/sto" instead)
/abc/foo/bar/abc/foo/bar (it will catch "/abc/foo/bar/abc/foo/bar" instead)
让我知道这是否足够清楚。谢谢!
试试看:
/^(?:\/+(?!$|(?:stop\/?))[^\/]+)*/
Regex101演示
说明:
/^.+?(?=\/*$|\/+stop\b)/
var re = /^.+?(?=\/*$|\/+stop\b)/,
test_strings = ["/abc/foo/bar",
"/abc/foo/bar/",
"/abc/foo/bar///",
"/abc/foo/bar/stop",
"/abc/foo/bar/stop/foo/bar/stop/stop",
"/abc/foo/bar//stop",
"/abc/foo/bar/sto",
"/abc/foo/bar/abc/foo/bar"];
for(var s = 0; s < test_strings.length; s++) {
console.log(test_strings[s].match(re)[0]);
}
/*
Results:
/abc/foo/bar
/abc/foo/bar
/abc/foo/bar
/abc/foo/bar
/abc/foo/bar
/abc/foo/bar
/abc/foo/bar/sto
/abc/foo/bar/abc/foo/bar
*/
我想解析一个字符串,看看它是匹配整个字符串还是子字符串。我试过这个: 但我的问题是:
我面临着与Java的匹配器的其他问题。我试图使用正则表达式匹配我的JSON的内容,而不使用外部库。我的JSON看起来像这样: 但是,我只想匹配上半部分中的单词,即在第一个匹配。我试图创建一个新的模式和匹配器,但我不知道如何进行,也不知道如何在第一次出现
例如,我们有一个字符串:asd/asd/asd/1#s_ 我需要匹配以下部分:/asd/1#s_或asd/1#s_如何使用普通正则表达式? 我试过像这样的消极前瞻,但它不起作用 它匹配这个“前缀/asd/1#s_”,我需要匹配“/asd/1#s_”中的这个“/asd/1#”,我需要匹配“/asd/1#s_”,而没有所有前面的 /asd/'s 匹配应该与普通正则表达式没有任何编程语言的任何帮助函数h
问题 你想要匹配两个或多个字符串。 解决方案 计算把一个字符串转换成另一个字符串所需的编辑距离或操作数。 levenshtein = (str1, str2) -> l1 = str1.length l2 = str2.length prevDist = [0..l2] nextDist = [0..l2] for i in [1..l1] by 1
问题内容: 我试图用来匹配包含两个不同字符串的行。我尝试了以下内容,但是这匹配包含 string1 或 string2的 行,而不是我想要的行。 那么,如何只与包含 两个字符串 的行匹配? 问题答案: 您可以使用 要么,
我正在处理一个关于codingbat的问题,这个问题说:给定一个字符串和第二个“单词”字符串,我们会说这个单词匹配字符串,如果它出现在字符串的前面,除了它的第一个字符不需要完全匹配...在匹配时,返回字符串的前面,或以其他方式返回空字符串。所以,所以用字符串“河马”,“嗨”这个词返回“嗨”,“xip”返回“臀部”。单词长度至少为1。我不能解决它,但在网上找到了一个解决方案,代码如下所示。代码工作,