我是新來正規expresions。我有一個巨大的文字。在應用程序中,我需要4個字符的單詞,並刪除其餘的單詞。文本是西班牙文。到目前爲止,我可以選擇4個字符長度的單詞,但我仍然需要刪除其餘的。正則表達式:拆分X長度單詞
這是我的正則表達式
\s(\w{3,3}[a-zA-ZáéíóúäëïöüñÑ])\s
我怎樣才能在asp.net VB 4個字母的所有單詞?
我是新來正規expresions。我有一個巨大的文字。在應用程序中,我需要4個字符的單詞,並刪除其餘的單詞。文本是西班牙文。到目前爲止,我可以選擇4個字符長度的單詞,但我仍然需要刪除其餘的。正則表達式:拆分X長度單詞
這是我的正則表達式
\s(\w{3,3}[a-zA-ZáéíóúäëïöüñÑ])\s
我怎樣才能在asp.net VB 4個字母的所有單詞?
使用炭在另一個答案中提供了上面提供的acter類(\ w不幸地與西班牙文字符不匹配)。
您可以用這個匹配(它的反向匹配,基本匹配的一切,是不是 4個字符的話,那麼你可以用「替換」,只留下4個字符的話):
/(^|(?<=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W)))(.*?)((?=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W))|$)/gis
近似的代碼在VB(未測試):
Dim input As String = "This is your text"
Dim pattern As String = "/(^|(?<=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W)))(.*?)((?=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W))|$)/gis"
Dim replacement As String = " "
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
Console.WriteLine("Original String: {0}", input)
Console.WriteLine("Replacement String: {0}", result)
你可以看到在行動這裏正則表達式的結果:
\[^a-zA-ZáéíóúäëïöüñÑ][a-zA-ZáéíóúäëïöüñÑ]{4}[^a-zA-ZáéíóúäëïöüñÑ]\g
翻譯: 非字母,隨後4個字母,接着通過非信。顯示的'g'將不止一次地在全球範圍內匹配。
看看這個鏈接,瞭解更多信息的循環您的比賽: http://osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.html
**如果4個字母的單詞在字符串中非常首位或非常最後一個,在單詞之前/之後沒有非字母 – 2012-04-19 23:18:30
/(?:\A|(?<=\P{L}))(\p{L}{4})(?:(?=\P{L})|\z)/g
說明:
開關/g
被用於重複搜索
\A
是字符串的開頭(不是行首)
\p{L}
單個碼點的類別相匹配信
\P{L}
匹配單個碼點不是在類別信
{n}
指定的重複的一個特定量[Ñ是數]
\z
是字符串的結尾(不是行尾)
|
是邏輯OR操作者
(?<=)
是回顧後
(?=)
是先行
(?:)
是非反向引用分組
()
是反向引用分組
(1)VB不支持正則表達式文本; (二)有沒有類似'/ g'標誌 - 你只需要調用(例如)'匹配()''而不是匹配()'的; (3)'\ p {L}'匹配大寫和小寫字母了,所以你不需要'/ i'標誌(或同等學歷)。 – 2012-04-20 12:06:46
它甚至沒有在這裏工作http://gskinner.com/RegExr/ – chepe263 2012-04-20 17:47:59
@ chepe263 - gskinner.com不支持'\ p {L}'和'\ p {L}' – 2012-04-20 17:49:31
這是工作好。格拉西亞斯 – chepe263 2012-04-20 17:59:52