【问题标题】:How to create a regex that match "/ but not "/" or "/a (only "/)?如何创建匹配“/”但不匹配“/”或“/a(仅“/)的正则表达式?
【发布时间】:2016-10-14 04:55:48
【问题描述】:

我需要一个可以匹配"/ 但不能匹配"/""/> 的正则表达式。比如:

  • "/hello" :匹配 "/
  • "/cool.php" :匹配 "/
  • a + "/" + b:不匹配
  • <input name="hello"/>:不匹配

使用正则表达式生成器,我设法创建了一个正则表达式 "\/[^\>"] 匹配 "/ 但加上一个字符。所以"/hello" 将匹配"/h。这是错误的。

我是正则表达式的小新手。我的正则表达式有什么问题?您能否修复它,并可能解释一下为什么它是错误的,您修复了哪一部分以及为什么?

【问题讨论】:

  • 这个正则表达式将在哪种编程语言上运行? (顺便说一句,您似乎正在尝试使用正则表达式解析 HTML...)
  • @PranavCBalan 嘿,效果很好!你应该让你的评论成为答案。谢谢!

标签: regex


【解决方案1】:

【讨论】:

  • 这与单独的字符串"/ 不匹配
  • @Bergi :这取决于用户的需要,无论如何它可以做到"\/(?=[^\>"]|$)
  • 确实如此,但需要注意区别。
  • @PranavCBalan 你原来的正则表达式工作正常,我已经测试过了,它也可以单独识别"/|$ 是做什么的?
  • @Bergi 的 negative 展望更加优雅和可读。
【解决方案2】:

使用negative lookahead

"\/(?!"|>)

【讨论】:

  • 我猜"\/(?![">]) 更精简一些。
  • @WiktorStribiżew:但是多了一个字符!天哪 :-)
  • @WiktorStribiżew no: "|>[">]
  • 在正则表达式方面,更短并不意味着更高效。
  • @Bohemian:取决于使用它的语言,斜杠是一种流行的文字分隔符(并且 OP 也将其转义)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多