2017-02-23 106 views
1

我有大約1300宜家產品列表中標記的話 - 這是一些人的例子:我試圖使用正則表達式來標記那些包含「特殊」有特殊字符

läkt 
bigarrå 
bekväm 
blixt 
block 
blom 
bärbar 
bärby 
bästis 
bådalen 
bågvik 

字符 - 例如不是簡單的一個小寫的任何其他小寫ž - 如:

läkt 
bigarrå 
bekväm 
bärbar 
bärby 
bästis 
bådalen 
bågvik 

我想這一個:

[^a-z] 

但它選擇了所有的話。

我可以做到這一點,如果我只是使用PHP,通過ctype_alnum函數,但在這裏我只是使用TextPad或NotePad ++文本編輯器。

有沒有什麼辦法可以使用標準RegEx來實現?

+0

在記事本++中工作得很好,也許你需要更新? – Nullman

+1

你使用*標記所有*功能嗎?試試'[^ a-z \ r \ n]' –

+0

感謝您的回覆。我在Notepad ++ 7.2.2中嘗試過,它仍然標記所有的行。 @WiktorStribiżew - 謝謝 - 您的建議在TextPad中訣竅。 – 4532066

回答

1

[^a-z]模式可以匹配一個CR或LF符號,這使得TextPad/Notepad ++可以標記每個行。所有你需要做的就是添加\r\n到否定字符類:

[^a-z\r\n] 

注意,這將與您的具體數據只工作,因爲它不是小寫ASCII字母,回車CR和其他任何字符匹配換行LF符號。

一個正則表達式,將匹配任何字母,但可以在記事本+ +中使用小寫ASCII字母:

(?![a-z])\pL 

(請注意,您也可以使用(?![a-z])\p{L})。

這裏,(?![a-z])限制匹配任何字母,這樣它不能匹配任何小寫ASCII字母(注意區分大小寫選項必須啓用)\pL模式。

enter image description here

1

這是C#,但你應該得到的宜家

Regex.Match(value.ToString() 「[àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]」);

1

不知道你使用的語言,但這裏的JavaScript。

首先,我將數組拆分爲數組,然後過濾匹配的單詞。

`läkt 
bigarrå 
bekväm 
blixt 
block 
blom 
bärbar 
bärby 
bästis 
bådalen 
bågvik`.split(` 
`).filter(w => /[^a-z]/.test(w)) 

// => ["läkt", "bigarrå", "bekväm", "bärbar", "bärby", "bästis", "bådalen", "bågvik"]