Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 屏蔽除最后四位以外的所有数字_Regex - Fatal编程技术网

Regex 屏蔽除最后四位以外的所有数字

Regex 屏蔽除最后四位以外的所有数字,regex,Regex,我必须在日志文件中屏蔽feild的值,直到最后四位。问题是数字的长度没有固定。它可以是16位或更多 比如说 extntino=“1234567891234567” 正则表达式=(extntino=)([“][^”]\d{12}) 它工作正常,但当它超过16位时,无掩码数字将超过4位。此外,如果有空格b/w feild、=和value,它将失败这将捕获您想要的内容: (ExtnTinNo=)(["'][^"']*?)\d{4}["'] 我不确定你到底应该在小组中捕获什么,所以我把它们保留在原来的

我必须在日志文件中屏蔽feild的值,直到最后四位。问题是数字的长度没有固定。它可以是16位或更多

比如说

extntino=“1234567891234567”

正则表达式=(extntino=)([“][^”]\d{12})


它工作正常,但当它超过16位时,无掩码数字将超过4位。此外,如果有空格b/w feild、=和value,它将失败

这将捕获您想要的内容:

(ExtnTinNo=)(["'][^"']*?)\d{4}["']
我不确定你到底应该在小组中捕获什么,所以我把它们保留在原来的正则表达式中。第1组匹配“extntino=”,第2组匹配引号,后跟要屏蔽的数字

细分:

(extntino=)
显然匹配extntino=

\d{4}[“]
匹配结束“或”之前的最后4位数字


([“][^”]*?)
匹配介于两者之间的所有内容,即“或”后跟要屏蔽的数字

这应该捕获您想要的内容:

(ExtnTinNo=)(["'][^"']*?)\d{4}["']
我不确定您应该在组中捕获什么,因此我将它们保留在原始正则表达式中。组1匹配“extntino=”,组2匹配引号,后跟要屏蔽的数字

细分:

(extntino=)
显然匹配extntino=

\d{4}[“]
匹配结束“或”之前的最后4位数字


([“][^”]*?)
匹配中间的所有内容,即“或”后跟要屏蔽的数字

考虑以下正则表达式

(?<=(ExtnTinNo=)(["'][^"']*?))\d{4}(?=["'])

(?考虑以下正则表达式

(?<=(ExtnTinNo=)(["'][^"']*?))\d{4}(?=["'])

(?我假设您希望像这样转换文本:

ExtnTinNo="1234567891234567"
ExtnTinNo="12345678912345678912345"
ExtnTinNo="****4567"
ExtnTinNo="****2345"
对这样的事情:

ExtnTinNo="1234567891234567"
ExtnTinNo="12345678912345678912345"
ExtnTinNo="****4567"
ExtnTinNo="****2345"
如果是这样,您应该尝试以下正则表达式:

(?<=ExtnTinNo=['"])\d{12,}(?=[\d]{4}["'])
通过简单地使用Regex替换,您将得到上面给出的结果

它是这样工作的:

(?<=ExtnTinNo=['"])  - checks that the number is preceded by ExtnTinNo="
                       (not included in the match)
\d{12,}              - matches 12 or more numbers
(?=[\d]{4}["'])      - if these 12 numbers are followed by another 4 numbers
                       and a " or ' (not included in the match)

(请参见,单击“上下文”选项卡以查看替换后的结果)

我假设您希望像这样转换文本:

ExtnTinNo="1234567891234567"
ExtnTinNo="12345678912345678912345"
ExtnTinNo="****4567"
ExtnTinNo="****2345"
对这样的事情:

ExtnTinNo="1234567891234567"
ExtnTinNo="12345678912345678912345"
ExtnTinNo="****4567"
ExtnTinNo="****2345"
如果是这样,您应该尝试以下正则表达式:

(?<=ExtnTinNo=['"])\d{12,}(?=[\d]{4}["'])
通过简单地使用Regex替换,您将得到上面给出的结果

它是这样工作的:

(?<=ExtnTinNo=['"])  - checks that the number is preceded by ExtnTinNo="
                       (not included in the match)
\d{12,}              - matches 12 or more numbers
(?=[\d]{4}["'])      - if these 12 numbers are followed by another 4 numbers
                       and a " or ' (not included in the match)

(请参阅,单击“上下文”选项卡查看替换后的结果)

您用于此掩蔽的语言/工具是什么?您用于此掩蔽的语言/工具是什么?