当前位置: 首页 > 编程语言 > C#

正则表达式匹配两个或多个连续字符分享

时间:2023-04-11 00:45:52 C#

正则表达式匹配两个或多个连续字符使用正则表达式我想匹配单个单词例如,flin..stones或flin__stones或flin-stonesare不允许。允许使用fl_i_stones或fli_st.ones或flin.stones或flinstones。到目前为止,我的正则表达式是^[a-zA-Z][a-zA-Zd._-]+$所以我的问题是如何使用正则表达式执行此操作,您可以使用先行和反向引用来解决此问题。但请注意,现在您至少需要2个字符。首字母和另一个(由于+)。您可能想使用+和*以便第二个字符类可以重复0次或多次:^(?!.*(.)1)[a-zA-Z][a-zA-Zd._-]*$前瞻如何工作?首先,这是一个消极的前瞻性。如果内部模式找到匹配项,则前瞻会导致整个模式失败,反之亦然。所以如果我们有两个连续的字符,我们可以在里面匹配一个模式。首先,我们查看字符串中的任意位置(.*),然后我们匹配单个(任意)字符(.)并用括号捕获它。所以一个角色进入捕获组1。然后我们要求这个捕获组跟随它自己(使用1来指代它)。所以内部模式将尝试在字符串中的每个单独位置(由于回溯)是否有一个字符跟随它自己。如果找到这两个连续的字符,则该模式将失败。如果未找到它们,引擎将跳回到前瞻开始的位置(字符串的开头)并继续匹配实际模式。或者,您可以将其拆分为两个单独的支票。一个用于有效字符和起始字母:^[a-zA-Z][a-zA-Zd._-]*$一个用于连续字符(您可以在其中反转匹配):(.)1这将大大提高代码的可读性(因为它比lookaheads更明确),并且它还允许您检测模式中的实际问题并返回适当且有用的错误消息。以上就是C#学习教程:正则表达式匹配所有两个或多个连续字符共有的内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,并不代表侵权,如有侵权,请点击右边联系管理员删除。如需转载请注明出处: