簡體   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