繁体   English   中英

Perl正则表达式-排除模式

[英]Perl Regex - Exclude a pattern

为此,我必须将所有数字替换为文本标记“ NUMBER”。 但是在一定条件下,如果存在带下划线的数字,则不应更改它(例如123_456)。 我在用

s/\d+/NUMBER/g

但会将喜欢的123_456更改为NUMBER_NUMBER。 有办法排除它吗? [^ xyz]模式可能不起作用,因为它一次否定一个字符(这是我的理解)。 有任何想法吗 ? 输入文件示例为:不应更改最后一个数字。

received for code:3
received for code:1
received for code:9
received for code:33
received for code:4
received for code:323_456

您可以使用单词边界来避免匹配的数字,后跟一个下划线:

s/\b\d+\b/NUMBER/g

仅匹配之前或之后没有_的数字组:

s/(?<![_0-9])[0-9]+(?![_0-9])/NUMBER/g;

请注意, \\d通常不是人们想要的,因为它可以匹配更多的数字字符,而不仅仅是0-9。 (尽管/ a标志的确使它仅表示0-9。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM