我试图只捕获以下内容:
- .1
- 阿拉伯数字
- '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]))