【问题标题】:Regex negative range algorithm [duplicate]正则表达式负范围算法[重复]
【发布时间】:2016-04-16 01:45:54
【问题描述】:

我需要在我的正则表达式匹配器中实现正负范围。

正数范围看起来并不难:

[1-3] == (1|2|3)

但我不明白如何将负范围 [^1-3] 转换为简单的正则表达式字符串。

有可能吗?

谢谢!


更新

不是。好像是不可能的。

好的,在这种情况下,正则表达式库如何处理负范围?

【问题讨论】:

  • 嗯,这个问题与语言无关。可以在许多开放库和 Web 服务中测试正则表达式。负范围在哪里起作用。我需要知道它是如何工作的。
  • 我误解了你在说什么,并删除了我的评论。 .Net 可以让你做字符类减法。
  • 可能,带有前瞻/后瞻断言。这取决于您使用的正则表达式引擎、您使用的语言以及您尝试完全匹配的内容。
  • 不清楚你在问什么。您是否正在尝试实现正则表达式引擎?
  • >> 你想实现一个正则表达式引擎吗?是的

标签: regex algorithm


【解决方案1】:

如果您使用的正则表达式引擎支持负前瞻,您可以这样做:

(?!1|2|3).

?! 是负前瞻运算符。它说“这个表达式后面的字符不能匹配这个表达式。”它在不前进光标的情况下进行否定匹配。这里后面跟一个. 表示任何字符。

【讨论】:

  • 这不是 OP 对 IMO 的要求。他想知道如何在 NFA 中表示边缘的否定值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 2016-04-07
相关资源
最近更新 更多