【问题标题】:Regex to capture: word {word} word要捕获的正则表达式:word {word} word
【发布时间】:2019-06-06 17:40:54
【问题描述】:

我正在尝试捕获:单词 {word} 单词。

我有以下正则表达式:\S*\s\{.*?\}\S[^{\s]*

它实际上捕获了这种模式,但它也捕获了单词 {​​word}。见:https://regex101.com/r/yI64KQ/6

如何将其修复为仅捕获:word {word} word?

非常感谢所有提供帮助的人。

【问题讨论】:

  • "[^{s]" 的意思是"[^{\s]"(即空格,而不是文字"s"
  • 对不起,我修好了。事实上,另一个用户编辑是因为我忘记了```来正则表达式。更糟糕的是……哈哈
  • A-z 范围内匹配的字符不止字母。我建议你看一下 ASCII 表。

标签: regex


【解决方案1】:

【讨论】:

  • 另一个问题:regex101.com/r/yI64KQ/8。是否也可以捕获 test2 {test} test3?
  • 我只能想到以下方式:regex101.com/r/yI64KQ/10 所以你把它合二为一,然后用你可以反汇编的东西创建一个函数。
  • 谢谢@Norbert Incze,我会这样做的。我还有一个问题。这是关于断线的。你能帮忙吗?看:regex101.com/r/yI64KQ/11(我把 \w 改成了 [A-zÀ-ú] 因为我的语言有很多重音词,所以 \w 不能正常工作)
  • regex101.com/r/yI64KQ/16,您也可以在其中添加特殊字符,就像我添加的一样。
  • 谢谢你!你是个坏蛋!哈哈你帮我解决其他问题:stackoverflow.com/questions/56495115/…。谢谢!非常感谢你!你拯救了我的一天!
【解决方案2】:

如果我对问题的理解正确,我们希望捕获这三个词,我们可以从类似于以下的表达式开始:

^(.+?)(\s+)?({(.*)?\})?(\s+)?(.+?)?$

Demo

【讨论】:

  • 感谢@Emma 的帮助。我不知道如何表达我需要的东西。但是您的示例对我了解更多有关正则表达式的信息很有帮助。非常感谢。
【解决方案3】:

[已解决]

感谢Norbert Incze,最终正则表达式为:([A-zÀ-ú]+([^\S\n]+\{[^}]*\}[^\S\n]+[A-zÀ-ú]+)+)

这很完美!感谢所有帮助过我的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多