【发布时间】:2017-10-12 13:18:11
【问题描述】:
我尝试的 PCRE 正则表达式找到第一个字符并删除它之后的所有内容。
以下是字符串示例:
$128.48 One Month TV Internet and Voice, 100GB of Fiber<sup>†</sup> Internet.
$148.48 One Month TV Internet and Voice, 200GB of Fiber<sup>†</sup> Internet and a free movie rental from MoviePlex.
我只想从字符串中提取以下字符并保持字符串的其余部分不变。摘录:<sup>&dagger </sup>
预期结果:
$148.48 One Month TV Internet and Voice, 200GB of Fiber;Internet and a free movie rental from MoviePlex.
$128.48 One Month TV Internet and Voice, 100GB of Fiber; Internet.
这是我尝试过的正则表达式:
[^&dagger<sup><\/sup>]*
【问题讨论】:
-
“提取”是指删除?如果
<sup>&dagger;</sup>是静态的,则不需要正则表达式 - 只需将其替换为空字符串即可。 -
是的,“删除”...我只需要 Regex 语法...因为我将 Regex 插入到工具中。我不是在写实际的代码/脚本。
-
所以正则表达式可以简单地是
<sup>&dagger;</sup>。根据工具风格,您可能需要转义/,即<sup>&dagger;<\/sup>。检查this example。 -
上述第 1 场评论结果为:† 第 1 场比赛结果应为“$128.48 一个月电视互联网和语音,100GB 光纤;互联网。”
-
你应该替换,就像我提供的例子一样。您不能让正则表达式匹配字符串的单独部分,而不匹配其间的任何内容。 IE。在
AAABBBCCC中,您无法匹配AAA和CCC不匹配 BBB。您可以分别捕获AAA和CCC,但它们最终会在不同的捕获组中。另一种使用替换的方法是替换整个字符串,在这种情况下,您可以尝试使用(.*)<sup>&dagger;<\/sup>(.*)|(.*)捕获第一个和最后一个部分,替换为$1$2$3(或\1\2\3,具体取决于您的工具)。 See regex101 here.