我正在寻找可以匹配这两行的正则表达式:
foo/bar
foo/bar baz
并将 foo
、bar
和 baz
捕获到单独的匹配组中。
我尝试过这个正则表达式:
^([^\/]+)\/([^\/#]+)? (\w+)$
最佳答案
您可以使用下面的正则表达式
^(\w+)\/(\w+)\s*(\w+)?$
^
:以 anchor 开头(\w+)
:匹配一个或多个单词字符(字母、数字和下划线)并将其添加到捕获组\/
:匹配正斜杠\s*
:匹配任意数量的空格(\w+)?
:可选的字母数字+下划线匹配$
:以 anchor 结尾
这是demo在 RegEx101.com 上。
这将匹配第一个捕获组中 /
之前的第一个单词,可以通过 $1
访问,第二组中 /
之后的单词 -$2
和 $3
中的可选单词。
如果有除\w
之外的其他字符,即[a-zA-Z0-9_]
,您可以使用下面的正则表达式
^([^\/]+)\/(\S+)\s*(\S+)?$
[^\/]+
将匹配除 /
之外的一个或多个字符。 \S+
将匹配一个或多个非空格字符。
关于javascript - 可选择在空格后匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430147/