如何编写正则表达式匹配后端响应中的指定超长整数
匹配符合要求的长整数正则解决方案
需求梳理
- 需要匹配的情况:
- 单独的整数(如
"BIG_INT": 123456789012345675) - 未被引号包裹的数组内所有长度≥16位的整数(如
"BIG_INT_ARRAY_MULTIPLE":[123456789012345661,...])
- 单独的整数(如
- 排除匹配的情况:
- 被双引号包裹的数字(如
"STRING_BIG_INT":"12345678901234567") - 字符串类型数组中的数字(如
"STRING_BIG_INT_ARRAY":"[12345678901234567,...]") - 小数(如
"BIG_INT_FLOATING_DECIMAL":12345678901234567.765...)
- 被双引号包裹的数字(如
正则表达式方案
可以使用以下正则精准匹配所有符合要求的数字:
(?<![\["])\b\d{16,}\b(?!["\.])(?=(?:[,\]\}]|$))
正则说明
(?<![\["]):负向断言,确保数字前没有左方括号或双引号,排除字符串内及字符串数组中的数字\b\d{16,}\b:匹配长度≥16位的完整整数,单词边界避免匹配数字片段(?!["\.])(?=(?:[,\]\}]|$)):负向断言排除数字后带双引号或小数点的情况(即小数),正向断言确保数字后是逗号、右方括号、右大括号或文本结尾,覆盖单独整数和数组内数字的场景
替换示例
将匹配到的数字替换为 ${0}n 即可转为BigInteger格式:
- 原内容:
"BIG_INT": 123456789012345675→ 替换后:"BIG_INT": 123456789012345675n - 原内容:
"BIG_INT_ARRAY_MULTIPLE":[123456789012345661, 987654321098765432]→ 替换后:"BIG_INT_ARRAY_MULTIPLE":[123456789012345661n, 987654321098765432n]
内容的提问来源于stack exchange,提问作者Prahlada
相关产品推荐
相关产品推荐

