Regex 如何使用正则表达式在Sublime text 3中选择整数和单位名称之间的文本?

Regex 如何使用正则表达式在Sublime text 3中选择整数和单位名称之间的文本?,regex,sublimetext3,sublimetext,regex-lookarounds,Regex,Sublimetext3,Sublimetext,Regex Lookarounds,目标是使用正则表达式在Sublime text 3中的整数和单元名称之间选择文本。我的想法是:首先选择整数和单元名,然后选择它们之间的所有内容: (?<=(1))(2)(?=(3)) 此表达式给出了错误“正则表达式中遇到无效的查找断言” 这个表达有什么不对?它应该与精确捕获表达式相结合,所以为了测试它,我使用了这个表达式(#1+#2): 如何在lookback中插入regexp#1?我不知道为什么它不起作用 提前谢谢 PS:单位是俄语的,所以这里是我用来测试regexp的文本: 9 19

目标是使用正则表达式在Sublime text 3中的整数和单元名称之间选择文本。我的想法是:首先选择整数和单元名,然后选择它们之间的所有内容:

(?<=(1))(2)(?=(3))
此表达式给出了错误“正则表达式中遇到无效的查找断言”

这个表达有什么不对?它应该与精确捕获表达式相结合,所以为了测试它,我使用了这个表达式(#1+#2):

如何在lookback中插入regexp#1?我不知道为什么它不起作用

提前谢谢

PS:单位是俄语的,所以这里是我用来测试regexp的文本:

9 192 631 770 Гц[15];
299 792 458 м/с[15];
6,022 14X·1023 моль−1;
540·1012 Гц
1 мкм-
1 мкм
1мкм
1&#160;мкм
12 мкм
12мкм
12&#160;мкм
500 647 м
500 647м
12 нм
12нм
12&#160;нм
12 сс
更新:regex的最终和工作版本:

((((?<=\d)([-−,*·\s]|(X·))(?=\d))|(\d))+)\K(.{0,10}?)(?=(((?<=\d)|(?<=\b))(моль|мкм|мф|нм|лм|кг|кд|Гц|Кл|К|Дж|Вт|м|с|ф|А)(?=\b)))

要点是,升华文本正则表达式由Boost正则表达式库提供支持,该库不支持无限宽度查找

为了缓解这种情况,Boost支持类似于正向查找的
\K
操作符。一旦匹配了
\K
左侧的模式,
\K
将丢弃该模式,并开始将新匹配的文本写入清晰的缓冲区


使用
PATTERN\u 1\KPATTERN\u 2(?=PATTERN\u 3)
方案替换为空字符串。

可能会帮助您:)Boost正则表达式不支持无限宽的后向查找,实际上您不需要它,因为您只需放置模式,然后在其后面使用
\K
。请尝试
\d+(?:)[-−,*\s] |X·)\d+*\K{1,10}?(||||||||||||||||||Ӡ||||||фАb
并替换为
$1
。谢谢!它只做了一点修改:((?您将
\K
放在模式1中,它应该介于之间。另外,为什么要使用这么多捕获组?
(?=\b)
=
\b
)。
(?<=(\d))(.*+)
(?<=(\d+))(.*+)
9 192 631 770 Гц[15];
299 792 458 м/с[15];
6,022 14X·1023 моль−1;
540·1012 Гц
1 мкм-
1 мкм
1мкм
1&#160;мкм
12 мкм
12мкм
12&#160;мкм
500 647 м
500 647м
12 нм
12нм
12&#160;нм
12 сс
((((?<=\d)([-−,*·\s]|(X·))(?=\d))|(\d))+)\K(.{0,10}?)(?=(((?<=\d)|(?<=\b))(моль|мкм|мф|нм|лм|кг|кд|Гц|Кл|К|Дж|Вт|м|с|ф|А)(?=\b)))
(?<=(1))(2)(?=(3))
(1)\K(2)(?=(3))