[英]PHP PREG Regex: What does “\W” mean when using the UTF-8 modifier?
[英]RegEx: \w - “_” + “-” in UTF-8
我需要一個匹配UTF-8字母和數字的正則表達式,短划線符號( -
)但不匹配下划線( _
),我嘗試了這些愚蠢的嘗試但沒有成功:
([\\w-^_])+
([\\w^_]-?)+
(\\w[^_]-?)+
\\w
是[A-Za-z0-9_]
簡寫,但如果我設置了u
修飾符,它也匹配UTF-8字符。
任何人都可以幫我解決這個問題嗎?
嘗試這個:
(?:[\w\-](?<!_))+
它對編碼為\\ w(或破折號)的任何內容進行簡單匹配,然后具有零寬度的lookbehind,以確保剛剛匹配的字符不是下划線。
否則你可以選擇這個:
(?:[^_\W]|-)+
這是一種更基於集合的方法(注意大寫W)
好吧,我在php的PCRE風格中使用unicode非常有趣:D Peekaboo說有一個簡單的解決方案:
[\p{L}\p{N}\-]+
\\ p {L}匹配任何符合字母條件的unicode(注意:不是單詞字符,因此沒有下划線),而\\ p {N}匹配任何看起來像數字的東西(包括羅馬數字和更奇特的東西)。
\\ - 只是一個逃脫的破折號。 雖然不是絕對必要的,但我傾向於在字符類中使用破折號...注意,在unicode中有許多不同的破折號,因此產生以下版本:
[\p{L}\p{N}\p{Pd}]+
其中“Pd”是標點符號,包括但不限於我們的減號。 (注意,這里再沒有下划線)。
我不確定你使用哪種語言,但在PERL中你可以簡單地寫:[[:alnum:] - ] +當設置正確的語言環境時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.