Python正则表达式 - 排除某个匹配项

时间:2018-05-31 15:59:53

标签: python regex

我试图仅捕获以下内容:

  • 0.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 in'100,000和.200 in .200,000和'300'000 - 我怎么能阻止它捕获它。因此它不应该捕获'100.000或.200,000或'300'000或abc'100,000等等。

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

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

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

我想捕捉一个有数字的数字。 ,'在它之前,例如:

  

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

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

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

2 个答案:

答案 0 :(得分:1)

如果我没有记错,你不想捕获'100.000或.200,000或'300'000或abc'100,000,但是你想要捕获包含[.,']后跟一个或多个的其余部分位数。

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

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

<强>详情

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

您的值将在捕获的第1组

Demo

答案 1 :(得分:0)

如果我理解正确并且您只想在任何逗号,句号或单引号之后输入下一个数字,那么(([\.,'’])([0-9]))就可以了。

如果我误解了你并且因为一个原因你有负面的看法,那么试试这个:

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