繁体   English   中英

Python regex - 排除某个匹配项

[英]Python regex - exclude a certain match

我只想捕获以下内容:

  • .1
  • ,2
  • '3

.,' 之后的数字可以是任何数字,并且可以在其之前或之后有任何内容。 因此,例如.1 abc ,我只想捕获 1 或abc,2 ,我只想捕获 2 。

因此,如果我们有以下内容:

10,000
1.1
,1
.2
'3
'100.000
.200,000
'300'000
abc'100,000
abc.4
abc,5
abc'6
abc 7
,8 abc
.9 abc
'10 abc
.11abc
,12abc

我有以下 python 正则表达式:

((?<![0-9])([.,':’])([0-9]{1,4}))

问题是它在 '100.000 中捕获 '100,在 .200,000 和 '300'000 中捕获 .200 - 我怎样才能阻止它捕获这个。 所以它不应该捕获 '100.000 或 .200,000 或 '300'000 或 abc'100,000 等等。

我用它来测试我的正则表达式: https : //pythex.org/

我为什么要这样做? 我正在将 InDesign 文件转换为 HTML,并且在某些转换中脚注不起作用,因此使用 SublimeText 上的 RegReplace 查找脚注并将其替换为特定的 HTML。


只是想让它更清楚,因为有人评论说不清楚。

我想捕获一个带有 . , ' 在它之前,例如:

这是一个长字符串,带有像这样的下标脚注编号。1 有时它们在脚注编号前有一个点,有时它们有一个逗号,2 然后有时它有一个撇号 3 现在我的正则表达式的问题是它正在捕获点、逗号或撇号后的数字,例如 30,000 或 20.000 或 '10,000。 我不想捕捉任何类似的东西,除了像这样 4 或像这样。 5 或像这样 ,6

所以我试图用我的正则表达式做的是在点、逗号和撇号之前查看是否有一个数字,如果有,那么我不想捕获任何一个,例如 '10,000 或 .20.000 或,15'000

现在 mypetlion 最接近,但他的正则表达式没有捕获列表中的最后 3 个,让我看看我能用他的正则表达式做什么。

如果我没记错的话,您不想捕获 '100.000 或 .200,000 或 '300'000 或 abc'100,000 但您确实想捕获包含[.,']后跟一个或多个数字的其余部分。

您可以匹配它们,然后使用交替| 并在一组中捕获您想要匹配的内容:

[.,']\\d+[.,']\\d+|[.,'](\\d+)

细节

  • [.,']\\d+[.,']\\d+匹配字符类中的一个字符,一位或多位数字并匹配字符类中的一个字符(你不想捕获的模式)
  • | 或者
  • [.,'](\\d+)匹配字符类中的一个字符并在一组中捕获一个或多个数字。

您的值将在捕获组 1 中

演示

如果我理解正确,并且您只想要任何逗号、句点或单引号之后的下一个数字,那么(([\\.,''])([0-9]))应该可以解决问题。

如果我误解了并且您出于某种原因进行了负面回顾,请尝试以下操作:

((?<![0-9])([\\.,''])([0-9]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM