正则表达式最后一次出现?

Roy*_*mir 96 regex path


我需要的最后一个反斜杠后,我试图抓住最后一部分\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 `(?!\\)`
Run Code Online (Sandbox Code Playgroud)

但我找不到它.

[Regexer Demo]

ste*_*ema 75

你的负面前瞻解决方案就是:

\\(?:.(?!\\))+$
Run Code Online (Sandbox Code Playgroud)

在Regexr上看到它

  • `(?:` 是一个非捕获组的开始。`.` 是任何字符,如果它后面没有跟一个 `\`,它会检查任何字符。 (4认同)
  • 在Tempered Greedy Token中,点应始终位于前瞻之后:`(?:(?!\\).)+`.([ref](http://stackoverflow.com/questions/30900794/tempered-greedy-token-what-is-different-about-placing-the-dot-before-the-negat))另外,你在RegExr上的例子使用两个反斜杠来分隔路径组件; 应该只有一个,正则表达式应*匹配*只有一个.([演示](http://regexr.com/3dpga)) (4认同)
  • `(?:[^\\/](?!(\\|/)))+$` 删除开头的斜杠并处理正斜杠和反斜杠。它还匹配路径中没有任何斜杠的整个字符串,例如 _manual.doc_ (2认同)

Jee*_*ter 39

一个对我有用的是:

.+(\\.+)$
Run Code Online (Sandbox Code Playgroud)

在线尝试!

说明:

.+     - 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
Run Code Online (Sandbox Code Playgroud)

  • 感谢分解部分:) (9认同)
  • 我专门寻找与最后一个正斜杠(/)匹配的正则表达式。当反斜杠被正斜杠替换时,@stema 上面接受的答案就会完成这项工作。你的匹配每个斜线后面的所有内容,这确实不是所寻求的解决方案。我赞成你的回答,因为你的解释很简洁,尽管你的解决方案并没有真正做到这一点 (3认同)

Tim*_*imE 35

前瞻性是一个正确的答案,但它可以更清晰地写成:

(\\)(?!.*\\)
Run Code Online (Sandbox Code Playgroud)

这会查找出现的\,然后在不匹配的检查中,它会查找任意数量的字符,后面跟着您不希望看到的字符.因为它是负数,所以只有在找不到匹配项时才会匹配.

  • 这匹配最后一个反斜杠*only*.OP也希望在它之后匹配所有内容. (4认同)

Mic*_*ker 25

您可以尝试将其锚定到字符串的末尾,例如\\[^\\]*$.虽然我不确定是否绝对必须使用正则表达式完成任务.

  • 这对我很有用。`([^\/]*)$` 匹配 Linux 机器路径中的文件名。你能解释一下插入符号`^`在这种情况下是如何工作的吗?我只用它来表示字符串的开头。 (2认同)

SER*_*PRO 8

那个正则表达式怎么样: \\[^\\]+$


Kat*_*tja 8

如果您不想包含反斜杠,而只想包含其后的文本,请尝试以下操作:([^\\]+)$或对于 unix:([^\/]+)$