我必须在pdf中找到一个小数,该小数位于“费用”列下。
因此,我遇到了正则表达式以找到可以正常工作的小数。但是在其中一份pdf文件中,我采用以下格式。
Pdf文本-收费(国家/地区)1.811.8和75/100 18,181.75 预计-18,181.75
用于查找文本“ Charge”后的小数的正则表达式:(Charge([0-9] *)(\ ,? []?[0-9])+(。[0-9 ] +))
因此,我想忽略“ charge”和小数点中间出现的任何内容。并显示十进制数字。有帮助吗?
情况2:“ 18,181.75”有时也可能出现在“收费”之前。就像“ 18,181.75在这里收取一些文字...”
答案 0 :(得分:2)
您可以利用.NET regex无限制宽度的隐藏方式:
Regex.Match(s, @"(?<=\bCharge\b.*)\d[\d,]*\.\d+|\d[\d,]*\.\d+(?=.*?\bCharge\b)")
请参见regex demo
详细信息
(?<=\bCharge\b.*)\d[\d,]*\.\d+
-整体上以Charge
开头的位置,其后带有除换行符以外的其他字符,然后匹配一个数字,后跟0+个逗号或数字,然后是一个点和一个1+数字|
-或\d[\d,]*\.\d+(?=.*?\bCharge\b)
-一个数字,后跟0+个逗号或数字,然后是一个点和1+个数字,并且后跟除换行符以外的任何0+个字符,其后应尽可能少,然后是{{1} }作为一个整体答案 1 :(得分:0)
下面的正则表达式应该会对您有所帮助。
new_list = [",".join(map(str, (list(a) + b))) for a, b in zip(s1, s2)]
希望这行得通。
答案 2 :(得分:0)
那呢:
(?<= [Cc] harge。)([0-9] ,[0-9] 。[0-9] )| [0- 9] ,[0-9] 。[0-9] (?= \ s [Cc] harge)