繁体   English   中英

正则表达式是否在字符的最后一个实例之后存在字符

Regex for if a character exists after the last instance of a character

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试组合一个正则表达式,该表达式将指示在字符串中某个字符的最后一个实例之后是否存在该字符。 例如,如果句点“.”,则正则表达式将返回匹配项。 出现在“/”的最后一个实例之后

到目前为止,我能够在 / 之后找到字符串最后一部分的字符串组合:

   [^\/]+$

但我不确定如何仅在句点“.”时返回匹配项。 包含在最后的字符串部分中。 我非常感谢任何帮助。

我意识到可以通过拆分字符串来做到这一点,但我希望存在一种纯粹的正则表达式方式。

1 个回复

你可以使用

/[^\/.]*\.[^\/]*$/       // The whole match is the required result
/.*\/([^\/.]*\.[^\/]*)$/ // and extract Group 1 contents

请参阅正则表达式演示 #1正则表达式演示 #2

第二个在实践中更有效,因为最后一个/之后的部分通常更接近较长字符串的末尾,并且通常更快地获得匹配。

详情

  • [^\\/.]* - 除.之外的零个或多个字符. /
  • \\. - 一个点
  • [^\\/]* - 除/之外的零个或多个字符
  • $ - 字符串的结尾。

JavaScript 演示:

 const texts = [ 'a/b/c', 'a/b/ca' ]; texts.forEach( text => { console.log( text, '(/[^\\/.]*\\.[^\\/]*$/) =>', (text.match(/[^\\/.]*\\.[^\\/]*$/)?.[0] || "No match") ); console.log( text, '(/(.*\\/([^\\/.]*\\.[^\\/]*)$/) =>', (text.match(/.*\\/([^\\/.]*\\.[^\\/]*)$/)?.[1] || "No match") ); } )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM