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

标签 python regex

我只想捕获以下内容:

  • .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,在 0.200,000 和 '300'000 中捕获 0.200 - 我怎样才能阻止它捕获这个。因此它不应捕获 '100.000 或 .200,000 或 '300'000 或 abc'100,000 等。

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

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

<小时/>

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

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

This is a long string with subscript footnote numbers like this.1 Sometimes they have a dot before the footnote number and sometimes they have a comma,2 Then there are times when it has an apostrophe'3 Now the problem with my regex was that it was capturing the numbers after a dot, comma or apostrophe for values like this 30,000 or 20.000 or '10,000. I don't want to capture anything like that except like this'4 or like this.5 or like this ,6

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

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

最佳答案

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

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

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

详细信息

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

您的值将位于捕获的组 1 中

Demo

关于Python 正则表达式 - 排除某个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50628396/

相关文章:

regex - 如何在 tcl 中使用正则表达式严格删除重复字符

java - 在操作 MM/DD/YYYY 格式时,如何获取月份(破折号之前的所有 #)

java - 正则表达式 - 以 OPERATION 开头,后面必须跟一个整数或 double

python - Selenium 的 chromedriver PermissionError : [Errno 1] Operation not permitted Error on Mac OSx

python - 这个过程有没有更有效的算法?

python - 在 Python "' 模块中将 html 读取到数据框时出错模块'对象没有属性 '_base'“

python - 区分 Textmate 中 Python 字符串与 Docstrings 的语法颜色?

regex - 在perl正则表达式中匹配多行中的单词

python - 如何使用占位符分配 tf.Variables?

python - 数据框行迭代期间出错