【问题标题】:How do I properly backreference this regex pattern?我如何正确地反向引用这个正则表达式模式?
【发布时间】:2020-05-27 06:08:12
【问题描述】:

我有这个正则表达式 (?<={|\sand\s)(.*?)(?=\sand\s)

仅匹配“一”、“二”和“三” {one and two and three and four}

但是当我尝试用\1 反向引用\sand\s

(?<={|(\sand\s)\1)(.*?)(?=\1)

不匹配“一”,只匹配“二”和“三”

我刚开始使用正则表达式,所以我不确定这里发生了什么,不胜感激

编辑:我很抱歉,一开始我似乎不明白反向引用是什么意思,我意识到我的情况不需要它,但是感谢那些花时间理解这种废话的人。

【问题讨论】:

  • 你想用你的第二个模式匹配什么?
  • 请显示给定的字符串和所需的结果,并给出您希望应用产生所需结果的规则(用文字表示,而不是正则表达式)。反向引用文字(" and ")有什么意义?我建议您减少对技术(反向引用)的关注,并简单地解释您要实现的目标。
  • 抱歉,我只是想知道为什么对 \sand\s 应用反向引用会得到与我没有反向引用 {one and two and three and four} 所需结果“一”、“二”和“三”时不同的结果

标签: regex backreference


【解决方案1】:

如果您要匹配的是数字单词,那么这似乎可行(尽管没有反向引用):

"(?<=\{|\sand\s)(.*?)(?=\}|\sand\s)"

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2017-04-01
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多