Regex 试图找出如何在斜杠和正则表达式之间捕获文本
我有一个正则表达式Regex 试图找出如何在斜杠和正则表达式之间捕获文本,regex,Regex,我有一个正则表达式 但是这个正则表达式与“/test/”匹配,而不仅仅是test。我做错了什么?您需要使用lookaround断言 (?<=\/)[^\/]*(?=\/[^\/]*$) 代码的问题是,开始和结束斜杠是捕获组的一部分 文本:/1/2/test/ 正则表达式:/\/(\[^\/\]*?)(?=\/)/g 捕获三个列表:“1”、“2”、“测试” 您使用的语言会影响结果。例如,JavaScript可能没有特定的lookarounds,或者可能实际上捕获了非捕获组中的某些内容
但是这个正则表达式与“
/test/
”匹配,而不仅仅是test
。我做错了什么?您需要使用lookaround断言
(?<=\/)[^\/]*(?=\/[^\/]*$)
代码的问题是,开始和结束斜杠是捕获组的一部分
- 文本:
/1/2/test/
- 正则表达式:
/\/(\[^\/\]*?)(?=\/)/g
- 捕获三个列表:“1”、“2”、“测试”
- 您使用的语言会影响结果。例如,JavaScript可能没有特定的lookarounds,或者可能实际上捕获了非捕获组中的某些内容。但是,上述操作应按预期进行。在PHP中,所有的
匹配字符都必须转义(根据regex101.com),这就是为什么没有使用清理器/
[/]
测试
),则不需要积极的前瞻:
/\/([^\/]*?)\/$/
捷径
匹配:
/
”的每个字符
- 在这里找到匹配的。这是通过创建,即:放在括号内完成的
/
”,然后是字符串的结尾$
组(1)
更难阅读,只有当你想避开群体时 匹配与以前完全相同,只是现在我们告诉正则表达式引擎在尝试匹配(2)时不要使用字符。这是通过:
(?=)
完成的
代码:
获取match对象返回的内容。什么编程语言?我正在使用python。谢谢@Nboo
/[/]([^/]*?)[/]$/
仅用于测试
;或/[/]([^/]*?)(?=[/])/g
用于1
,2
,测试
。在\/
上使用[/]
的决定是主观的;不管你认为哪个更干净。@vol7ron:在python中不需要转义/
s,因为它不使用模式分隔符。语法:regex=r“pattern”
@Mariano,对了——这就是我的评论(在你上面)想要表达的意思
(?<=\/)[^\/]*(?=\/[^\/]*$)
\/([^\/]*)\/[^\/]*$
/\/([^\/]*?)\/$/
([^/]*)/$
[^/]*(?=/$)