簡體   English   中英

RegEx:\\ w - UTF-8中的“_”+“ - ”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM