【发布时间】:2021-10-13 01:17:31
【问题描述】:
我正在尝试使用正则表达式从字符串中提取 BBCode ([U],[B],[I]) 的子集。我发现了很多问题,询问如何简单地解析/替换字符串中的 BBCode,但我想提取所有部分 - 普通文本部分和包含在标签中的部分。
我想出了以下正则表达式:(.*?)(\[[UBI]\](.*?)\[\/[UBI]\])(.*?)
它似乎几乎可以工作,除了它错过了字符串末尾的任何“普通文本”。例如
test1 [B]bold text[/B] test2 [U]underlined[/U] test3
这将导致两个匹配项
Match 1:
group1: test1
group2: [B]bold text[/B]
group3: bold text
Match 2:
group1: test2
group2: [U]underlined[/U]
group3: underlined
我怎样才能使它也匹配尾随 test3(作为新的 Match 或 group4(这是我的意图)?
【问题讨论】:
-
这似乎行得通。也许这取决于您运行它的环境的设置(您没有提到)......
-
@MBaas 嗯,你在哪里试过的?我在 regexr.com 和 Dart 代码中都尝试过,无论我尝试使用哪种修饰符,我都无法将最后一部分 (
test3) 包含在匹配中。 -
我在 Regexbuddy 中试过(抱歉,需要下载,一个 Windows 应用)