我几乎已经将这个正则表达式做好了,但是在处理前斜杠时遇到了麻烦。有没有人能看出我的问题所在?我只想从这个例子中提取第一个字符串 "
projects
" 。 /projects/personal/29/56
see also here -> http://regexr.com?300av
projects
" 。 /projects/personal/29/56
see also here -> http://regexr.com?300av
最简单的方法是使用正斜杠来拆分字符串。
var firstString = url.split('/')[1];
如果你想提取第一个字符串,可以使用以下正则表达式,但要注意不要在正则表达式中添加全局参数。
\/([a-zA-Z0-9]{0,})
希望这能有所帮助
看起来你可以使用split方法获取测试结果,但是如果要纯正的正则表达式解决方案,请使用以下方法:
s = '/projects/personal/29/56';
arr = s.match(/^\/([^/]*)\//); // arr[1] becomes 'project'
document.writeln('<pre>Matched: [' + arr[1] + "]</pre>");
我尝试了一下anubhava的答案,得到了以下结果
string expression returns
/projects/personal/29/56 ([a-zA-Z])([^/]*)\/ projects/
/projects/personal/29/56 ([a-zA-Z])([^/]*) projects
/projects123/personal/29/56 ([a-zA-Z])*?([a-zA-Z][0-9])([^/]*) projects123
/
/projects/personal/29/56
中的第一个字符串 projects
对于寻找此类答案的人,您可以尝试添加全局标志以获取其他值,并且除了url的第一部分“/projects”之外。
/projects/personal/29/56
您只需要遍历末尾的数组[i]
/\/([a-zA-Z0-9]{0,})/g[i]
expression returns
i=0 /projects
i=1 /personal
i=2 /29
i=3 /56
我在这里添加答案,只是因为我想将其添加到[SO]:Python:在// regex之间返回字符串,而那个问题被标记为此问题的副本(!!!当我正在编辑时!!!)。
script.py:
#!/usr/bin/env python3
import re
def main():
group_name = "between_slashes"
words = [
"en/lemon_peel/n/",
"ca/llimona/n/",
"/asd /",
"/asd",
"asdf/",
"aa//vv",
]
pat = re.compile("^[^/]*/(?P<{}>[^/]*)/.*$".format(group_name))
for idx, word in enumerate(words):
match = pat.match(word)
if match is not None:
print("{}: \"{}\" - \"{}\"".format(idx, word, match.group(group_name)))
else:
print("{}: \"{}\"".format(idx, word))
if __name__ == "__main__":
main()
注意:
(?P<name>...)
)输出:
c:\Work\Dev\StackOverflow\q45985002>"c:\Install\x64\Python\Python\3.5\python.exe" script.py
0: "en/lemon_peel/n/" - "lemon_peel"
1: "ca/llimona/n/" - "llimona"
2: "/asd /" - "asd "
3: "/asd"
4: "asdf/"
5: "aa//vv" - ""
\B\/([a-zA-Z0-9-]{0,})\S
^\/(.+)\/.*$
并获取第一组。 - epoch