我试图仅捕获以下内容:
。之后的数字,可以是任何数字,可以在它之前或之后有任何数字。所以例如, .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个,让我看看他的正则表达式能做什么。
答案 0 :(得分:1)
如果我没有记错,你不想捕获'100.000或.200,000或'300'000或abc'100,000,但是你想要捕获包含[.,']
后跟一个或多个的其余部分位数。
您可以匹配它们,然后使用alternation |
并在组中捕获您想要匹配的内容:
<强>详情
[.,']\d+[.,']\d+
匹配字符类中的一个字符,一个或多个数字,并匹配字符类中的一个字符(您不想捕获的模式) |
或[.,'](\d+)
匹配字符类中的一个字符,并在一个或多个数字组中捕获。您的值将在捕获的第1组
中答案 1 :(得分:0)
如果我理解正确并且您只想在任何逗号,句号或单引号之后输入下一个数字,那么(([\.,'’])([0-9]))
就可以了。
如果我误解了你并且因为一个原因你有负面的看法,那么试试这个:
((?<![0-9])([\.,'’])([0-9]))