我几乎得到了这个正则表达式的工作但是我遇到了领先的正斜线 - 有谁能看到我在哪里出错?我只想在这个示例中提取第一个字符串“projects” - > http://regexr.com?300av
答案 0 :(得分:23)
最简单的方法是使用正斜杠
拆分字符串var firstString = url.split('/')[1];
并且您将拥有第一个字符串,但如果您想使用regext提取而不是这样,请记住不要在正则表达式中添加全局参数。
\/([a-zA-Z0-9]{0,})
我希望这会有所帮助
答案 1 :(得分:2)
您似乎可以使用拆分进行测试,但使用纯正则表达式解决方案:
s = '/projects/personal/29/56';
arr = s.match(/^\/([^/]*)\//); // arr[1] becomes 'project'
document.writeln('<pre>Matched: [' + arr[1] + "]</pre>");
答案 2 :(得分:2)
我玩了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
第二行达到了bsod99的要求:删除第一个slah /
并从projects
中提取第一个字符串/projects/personal/29/56
答案 3 :(得分:1)
添加寻找此类答案的人。除了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
答案 4 :(得分:0)
我在这里添加答案,只是因为我想将它添加到[SO]: Python: return a string between // regex [duplicate]并且该问题被标记为此问题(!!!我正在编辑!!!)。
<强>代码强>:
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()
备注强>:
^
)标记字符串的开头[]
匹配字符类:内容(^/
)告诉它匹配任何字符,但/
*
表示上一组(2.)可以 0或更多次/
字符,即我们的1 st (开始)后卫()
表示组匹配 - 稍后可以通过其名称(between_slashes
)引用。有关详情,请查看[Python]: Regular Expression Syntax(搜索(?P<name>...)
)>
之后)是我们正在寻找的内容(我们已经知道了什么):0个或更多非/
个字符/
字符是我们的2 nd (结束)警卫.*
告诉:任何字符,0次或更多次$
标记字符串的结尾<强>输出强>:
c:\Work\Dev\StackOverflow\q45985002>c:\Install\x64\Python\Python\3.5\python.exe a.py 0: "en/lemon_peel/n/" - "lemon_peel" 1: "ca/llimona/n/" - "llimona" 2: "/asd /" - "asd " 3: "/asd" 4: "asdf/" 5: "aa//vv" - ""
答案 5 :(得分:0)
在JS RegEx中,您可以使用:
\B\/([a-zA-Z0-9-]{0,})\S