Düzenli İfade: Split İngilizce ve Virgül ile İngilizce olmayan sözler?

4 Cevap php

Bu dizeyi değiştirmek için herhangi bir düzenli ifade deseni var mı

Bu üößñ ve İngilizce karışımı dizedir. üößñ Unicode sözler üößñ vardır.

Bu nasıl?

Bu üößñ, bir karışımı dize, ve İngilizce., Üößñ üößñ, Unicode kelimelerdir.

Aslında, ben virgül ile İngilizce kelime ve İngilizce olmayan kelimeleri bölmek istiyorum.

Teşekkürler.

4 Cevap

javascript

/ ((:? \ [^ \ \ D w] +) +) / g

'This is a mix string of üößñ and English. üößñ üößñ are Unicode words.'.replace(/ ((:? \ [^ \ \ D w] +) +) / g,',$1,')

Bu üößñ, bir karışımı dize, ve İngilizce., Üößñ üößñ, Unicode kelimelerdir.

Markos

Hayır normal ifade belirli bir language dizeleri algılayabilir, ama kesinlikle gibi unicode değişmezleri kullanarak kod puan aralığında, (ya da değil) karakterleri eşleşebilir

/[\u0900-\u097F]+/

hangi Devanagari bir karakter dizisi ile eşleşirken.

Bir Script (karakter koleksiyonu) çok dil tarafından kullanılabileceğini unutmayın.

Elbette, belirli ASCII kod aralıkları filtre \ x kullanabilirsiniz

(JavaScript) Örneğin:

var x = "This is a mix string of üößñ and English. üößñ üößñ are Unicode characters.";
x.replace(/([^\x00-\x80]+\s)+/g, function(match) { return match.slice(0,-1)+", "; } ); // matches characters outside the 0-128 ASCII range

Çıktı:

Bu karışımı üößñ dize ve İngilizce'dir. üößñ üößñ, Unicode karakterleridir.

Ben başka bir regex anlayışlı kişi daha optimize edebilirsiniz eminim, ama bu yarı-uyanık :) aklınıza gelebilecek en iyi

	String s = "This is a mix string of üößñ and English. üößñ üößñ are Unicode words.";
	System.out.println(s.replaceAll("((?: ?[\\p{L}&&[^A-Za-z]]+)+)", ",$1,"));

Unicode komut 45 different language komut dosyaları hakkında tanımlar. Yukarıda sadece ASCII aralığında herhangi bir unicode değil algılar.