【发布时间】:2017-10-21 13:45:13
【问题描述】:
我已经尝试过广泛搜索,也有类似的问题,但我无法弄清楚。
我的问题是,我在此表单上还有其他字符串:
%Aliquam hendrerit mollis pretium! Praesent id%
%molestie \*libero vel\%\% pulvinar? Sed%
\%% urna. \% Fusce% in *sapien %mau\*ris.%
我想选择两个 %s 之间的所有内容,忽略字符以 \ 开头的情况。第一个是微不足道的,而我以某种方式能够做到第二个。第三个,但是我就是想不通。为了澄清,我想从上面的文字中选择以下内容:
"%Aliquam hendrerit mollis pretium! Praesent id%"
"%molestie *libero vel\%\% pulvinar?sed%"
"% urna.\% Fusce%"
"%mau*ris.%"
想指出的是,原文可以是一个长字符串的一部分而没有换行符,即每一行不一定出现在换行符上。
到目前为止,我已经编写了以下正则表达式,它似乎能够匹配除最后一个之外的所有内容:
(?<!\\)%([^%]*)(?!%\\)(?:%|(.*)%)(?<!\\%)
对于它选择的最后一个:
"% urna.\% Fusce% in *sapien %mau*ris.%"
这太过分了。我真的不明白为什么会这样,也许是因为我的正则表达式中的 or 条件?非常感谢任何帮助!
【问题讨论】:
-
你不能在第二步中去掉转义字符吗?
s/\\.//g。而且我有点困惑,您是要忽略所有转义字符,还是只忽略百分号?您的问题说明的预期结果与您的示例提供的不同。 -
问题是转义字符是允许的,所以我不能把它们去掉。我将编辑主要帖子以希望消除混乱,对此感到抱歉!编辑:我已经编辑了主要帖子,其中包含我希望能够选择的正确示例。
标签: regex