regex模式用于看似简单的任务
本文关键字:简单 任务 模式 用于 regex | 更新日期: 2023-09-27 17:58:38
使用C#
我需要创建8个正则表达式模式来检查一堆任意长度的字符串(文本文件中每行一个)。我正在尝试将模式写为字符串,然后稍后将它们转换为Pattern
。
我相信我有:
1。所有号码(例如128329983928):"^[0-9]{string.length}$"
2。全部小写(例如aejksanikp):"^[a-z]{string.length}$"
3。全部大写(如AIJDJWIHJMNQ):"^[A-Z]{string.length}$"
我需要帮助的是:
4。全部小写,全部为一个字母(例如aaaaaaaaaa)
5。全部大写,全部为一个字母(例如AAAAAAAAAAA)
6。任何情况下,一个字母(如AAaaaaAAaaaaaaaaaa)
7。任何数字加上任何单个字母,任何情况:(例如1420A843aa830a3237A)
8。任何单个号码(如22222222222)
对于数字4、5和8,我可以做一堆|(或),但我希望有比"a|b|c|d|e...{string.length}"
更好的方法。我真的不知道6岁和7岁该怎么办。
4)。它从字符串(或行,如果是m
修饰符)的开始(^
)到结束($
)进行查找。它捕获一个字母字符(([a-z])
),然后查找该捕获的字符0+次('1*
)。演示。
^([a-z])'1*$
5) 。执行相同的操作,但首先捕获组[A-Z]
。演示
6) 。可以使用[a-Z]
、[A-z]
、[a-zA-Z]
,也可以仅使用i
修饰符使其不区分大小写。演示(带修改器)。
7) 。这个有点棘手。我们仍然像以前一样使用锚^
和$
。但现在我们寻找0+个数字,并捕获一个字母字符(这意味着字母可以在一些数字的前面或后面)。在此之后,我们查找一个数字或捕获的字母0+次,直到结束。听起来字母是必填的;但是,如果您希望它是可选的,您可以在捕获的字母(([a-z])?
)后面放一个?
。请记住使用i
修饰符使此不区分大小写,或者用[a-zA-Z]
替换捕获组。演示。
^'d*([a-z])('d|'1)*$
8) 。将实施例1中的[a-z]
替换为[0-9]
或'd
。演示。
参考文献:
- 速记字符类(即
'd
) - 分组和捕获(我们用它来捕获角色并用
'1
引用它)
注意:由于这看起来像是家庭作业,请询问您是否有超出我解释范围的问题,以便您了解一两个关于表达式的知识:)
4。全部小写,全部为一个字母(例如aaaaaaaaaa)
5。全部大写,全部为一个字母(例如AAAAAAAAAAA)
由于这两个将是:
"^[a]{string.length}$"
"^[A]{string.length}$"
你应该能够确定其余的(提示:[]代表一组)
编辑:更改了模式,以满足以下事实:输入为"文本文件中每行一个",regexp需要匹配整行。
- 好的
- 好的
- 好的
^([a-z])'1{string.length-1}$
^([A-Z])'1{string.length-1}$
^(?i)([a-z])'1{string.length-1}$
^([a-zA-Z0-9]){string.length-1}$
,除非它必须以数字开头,否则你会去用于:^[0-9][a-zA-Z0-9]{string.length-1}$
^([0-9])'1{string.length-1}
注意:
^
表示字符串的开始,$
表示字符串的结束。这样可以防止部分匹配(?i)
表示不区分大小写搜索的开始