我是新来正规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