regex 正则表达式选择所有“非”的文本:花括号{},它们之间是什么?

szqfcxe2  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(96)

如果我有这样一段文字:

    • Lorem ipsum dolor amet,consectetur {adipiscing elit bghy}. Ftoam sem augue {tincidunt sit amet},volutpat vel,egestas quis {lacus gonec mattis}.空白和空白载体,lectus mi {luctus urna eu molestie diam lectus vel eros}.多内克a massa neque.**

什么是正则表达式选择所有的文本是"不是":花括号{},它们之间是什么?
这个正则表达式选择花括号{}和它们之间的内容。我想要的是:所有"不"的文本:花括号{}以及它们之间的内容。

\{[^}]*\}
xuo3flqw

xuo3flqw1#

您没有使用任何工具或编程语言进行标记,但是您 * 使用了 * regex替换进行标记。假设您可以进行regex替换,请使用以下查找和替换:

Find:     \s*\{.*?\}\s*
Replace: (single space)

正则表达式的替换策略是删除花括号中的所有项。注意,您可能还需要从开始/结束处删除空格,因为上述替换可能会在那里留下悬空空格。
这是一个可以正常工作的regex demo
如果你 * 不能 * 做一个替换,你可以尝试在下面的正则表达式模式上查找:

(?<=[^\S{])\w+[,;:.]?(?: \w+[,;:.]?(?=[^\S}]))*

它匹配一个或多个可能用标点符号分隔的术语,并坚持第一个和最后一个术语不被{...}包围。

mccptt67

mccptt672#

使用负的lookahead和 * 所有格 * 量词:

[^}{]++(?!\})

Here is the demo at regex101

  • [^}{]匹配除大括号外的任何字符
  • ++possessively(不回馈)* 一次或多次 *
  • (?!\})仅匹配 * 后面不跟 * 右大括号的那些

相关问题