regex - 查找最里面的大括号中以给定子字符串的单词开头的文本

标签 regex python-3.x

考虑以下文本:

{\Largefont\it Hello world!} Some text. {   \Hugefont \sl Thanks.}

我正在尝试编写一个正则表达式,它将:

  1. 识别全文中最里面的大括号,并且
  2. 检查已识别文本 block 中的第一个单词是否以“\”开头并且其中包含子字符串“font”。

正则表达式

re.compile(r'\{\s*[^{}]+\}')

完成工作的第一部分。我如何完成第二部分?特别是,我不希望将 \Largefont\it 视为单个单词,而是将其视为两个单独的单词 \Largefont\it 。预期输出为:

{\Largefont\it Hello world!}
{   \Hugefont \sl Thanks.}

谢谢。

最佳答案

您需要进行积极的预测,以确保您的传入数据遵循模式。这是您可以使用的正则表达式,

(?<=\{)(?=\s*\\[^{}\\]*font)[^{}]+(?=\})

<强> Demo

说明:

  • (?<=\{) - 积极向后查看以确保文本前面有 {字符
  • (?=\s*\\[^{}\\]*font) - 积极向前看,以确保大括号内的内容以可选的空格开头,然后 \那么第一个单词包含 font第一个单词后跟除 { 之外的可选字符或}
  • [^{}]+ - 实际上捕获了预期的文本
  • (?=\}) - 积极前瞻,确保捕获的内容包含在右大括号内

关于regex - 查找最里面的大括号中以给定子字符串的单词开头的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504039/

相关文章:

javascript - 使用javascript读取HTML文本中的字符数

javascript - 用另一个 HTML 标签将 HTML 标签包装在纯字符串中

python - 漂亮的打印 Pandas : how to set the columns as displayed rows (and rows as displayed columns)?

algorithm - 使用递归提高 DFS 的时间复杂度,使每个节点仅与其后代一起工作

c - C 中的正则表达式在 egrep 匹配时不匹配

.net - 正则表达式太松散

.net - 如何使用正则表达式进行多行搜索?

python - 使用另一个变量的参数从另一个脚本调用脚本

python - json 格式转换为 float 列表

python - 当没有必要时,为什么要在 PyQt 中导入 QtGui 和 QtCore?