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,在 .200,000 和 '300'000 中捕获 '100 - 我怎样才能阻止它捕获它。所以它不应该捕获 '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。我不想捕捉任何类似的东西,除了像 this'4 或 like this.5 或 like this ,6
所以我试图用我的正则表达式做的是在点、逗号和撇号之前查看是否有数字,如果有,那么我不想捕获任何数字,例如 '10,000 或 .20.000 或,15'000
现在 mypetlion 最接近,但他的正则表达式没有捕获列表中的最后 3 个,让我看看我能用他的正则表达式做什么。
解决方案
如果我没记错的话,您不想捕获 '100.000 或 .200,000 或 '300'000 或 abc'100,000 ,但您确实想捕获包含[.,']
一个或多个数字的其余部分。
您可以匹配它们,然后使用交替 |
并在组中捕获您想要匹配的内容:
细节
[.,']\d+[.,']\d+
匹配字符类中的字符之一,一位或多位数字并匹配字符类中的字符之一(您不想捕获的模式)|
或者[.,'](\d+)
匹配字符类中的一个字符并在一组中捕获一个或多个数字。
您的值将在捕获的第 1 组中
推荐阅读
- vba - 将网页打印为pdf没有对话框Excel VBA
- r - 在 R ggplot2 中加粗一条网格线
- git - 如何抑制 git 消息:致命:此操作必须在工作树中运行
- angular - Local forage - 在从解析器中的 localforage 获取数据之前加载有角度的 UI
- c - 带有 %d 的字符输入导致无限循环
- syntax - 如何在相同的语法过程中使用两个不同的 excel 文件?
- r - 在 R 中多年从 netcdf 层获取两个变量的月平均值和总体平均值
- robotframework - 在机器人测试中,如何检查文件是否下载成功
- java - HTML 输入日期 - 从数据库填充的数据
- r - 如何跨多个列应用 ifelse 函数并在 R 中创建新列