我的正则表达式是这样的:
.*(kgrj4e|\*)[^:]*:([^;]*);?
'kgrj4e'部分是用户ID并且是动态的。 PR ....部分是打印机。如果找不到用户标识,我想要默认打印机(PR12346)。
对于下面的第一个测试字符串,我希望结果为PR12345,但我得到PR12346
snljoe,snlaks,kgrj4e,snlbla:PR12345; *:PR12346
注意:用户snljoe,snlaks和snlbla只是示例,可能完全不同。事实上,用户列表可以更长或更小。
对于下面的第二个测试字符串,我希望结果为PR12346
snljoe,snlaks,snlbla:PR12345; *:PR12346
如何修复正则表达式,以便两个测试字符串都给出预期的结果?
答案 0 :(得分:1)
您可以通过搜索获取号码并替换:
搜索:^(?:(?!.*,kgrj4e(?:[;,])).*\*:(\w+)|.*?(PR\d+).*)
替换为:$1$2
请参阅this demo
我假设kgrj4e
是用户定义的值,字符串中应该缺少该值以匹配上一个打印机值。如果存在,则返回第一个打印机值。