我一直在寻求为我的具体情况创建一个正则表达式。我对 Regex 的了解有限,通过在 StackOverflow 上搜索得到的最远的是这个 Regex:
^[pP][a-zA-Z0-9- ]*
我正在寻找一个强制字符串为:
- 以字母 'p' 或 'P' 开头,小写和大写
- 不少于19个字符
- 可能包含“-”、“%20”、“”或“+”
- 以'0000'结尾
- 在“p”和四个零以及“-”、“%20”、“”或“+”分隔符之间为字母数字
应该匹配正则表达式的字符串示例:
- PLX000000000PQ50000
- pLX000000000PQ50000
- plx000000000pq50000
- PLX-0000-0000-0PQ5-0000
- PLX-0000-0000-0PQ50000
- PLX+0000+0000+0PQ5+0000
- PLX%200000%200000%200PQ5%200000
- PLX 0000 0000 0PQ5 0000
我正在寻找的正则表达式是什么? 我使用的语言是 C#
最佳答案
添加到@Zenoo 的回答中,如果您想将 %20
视为单次出现,您可以使用以下表达式:
[pP]([a-zA-Z0-9 +-]|(%20)){14,}0000
您基本上将 %20
作为单个事件添加到可能的字符列表中。
Here is the live demo , 你可以用它来测试你想要的所有例子(我已经包括了你提供的那些),以及所有需要的技术解释,我在下面复制:
- pP 匹配列表 pP 中的单个字符(区分大小写)
- 第一个捕获组 ([a-zA-Z0-9 +-]|(%20)){14,} {14,} 量词 — 匹配次数在 13 到无限次之间,尽可能多, 根据需要回馈(贪婪)
- 1st Alternative [a-zA-Z0-9 +-] 匹配出现在 下面的列表 [a-zA-Z0-9 +-] a-z 范围内的单个字符 在 a(索引 97)和 z(索引 122)之间(区分大小写)
- A-Z 介于 A(索引 65)和 Z(索引 90) (区分大小写) 0-9 0之间范围内的单个字符 (索引 48)和 9(索引 57)(区分大小写)
- +- 匹配列表中的单个字符 +- (区分大小写)
- 第二个备选方案 (%20) 第二个捕获组 (%20) %20 与 %20 个字符(区分大小写)
- 0000 匹配字符 字面上的 0000(区分大小写)
关于c# - 寻找特定的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48784052/