我想捕获最后一个反斜杠之后的部分。
我需要 \Web_ERP_Assistant
(带有 \
)。
我的想法是:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
但我找不到它。
我想捕获最后一个反斜杠之后的部分。
我需要 \Web_ERP_Assistant
(带有 \
)。
我的想法是:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
但我找不到它。
(?:
表示非捕获组的开始。.
可以匹配任意字符,但是此处表示匹配除了 \
之外的任意字符。 - stema(?:[^\\/](?!(\\|/)))+$
这个正则表达式会去掉开头的斜杠,并适用于前斜杠和反斜杠。对于没有斜杠的路径,例如_manual.doc_,它也将匹配整个字符串。 - mrswadge(?:(?!\\).)+
。此外,你在RegExr上的示例使用两个反斜杠来分隔路径组件;实际上只需要一个,而且正则表达式只应匹配一个。 - Alan Moore.
,则似乎会失败。 - ScottishTapWater对我有效的方法是:
.+(\\.+)$
说明:
.+ - any character except newline
( - create a group
\\.+ - match a backslash, and any characters after it
) - end group
$ - this all has to happen at the end of the string
/(.+)
这样吗?这对我来说是有效的,只捕获最后一个斜杠后面的文本。如果它对你无效,可能是因为使用了不同的正则表达式方言。 - Vojta F负向先行断言是正确的答案,但可以更清晰地书写:
(\\)(?!.*\\)
这个代码会找到 \ 的位置,然后在没有匹配的情况下寻找任意数量的字符,再紧接着是你不想看到的字符。因为它是负向匹配,只有当找不到匹配时才算匹配。
\\[^\\]*$
。虽然我不确定是否必须使用正则表达式来完成此任务。([^ \ /] *)$
匹配Linux盒子上路径中的文件名。您能解释一下此上下文中插入符号“^”的作用吗?我之前只用过它来表示字符串的开头。 - Brad[^\/]
匹配除了斜杠(/)之外的任何字符。 - Michael Krelin - hacker如果您不想包含反斜杠,而只想包含其后的文本,请尝试以下内容:([^\\]+)$
或者对于Unix系统:([^\/]+)$
这个正则表达式是什么意思:\\[^\\]+$