正则表达式对单个字符使用方括号
Regex using brackets for a single character
我正在解决这个正则表达式问题
Given a test string, s , write a RegEx that matches s under the following conditions:
s must start with Mr., Mrs., Ms., Dr. or Er.
The rest of the string must contain only one or more English alphabetic letters (upper and lowercase).
我使用了这个模式
Regex_Pattern = r'^(Mr|Mrs|Ms|Dr|Er)\..[A-Za-z]+$'
但是这个测试用例失败了"Ms._underscore",然后我尝试使用这个模式
Regex_Pattern = r'^(Mr|Mrs|Ms|Dr|Er)[\..][A-Za-z]+$'
它通过了所有测试用例,我无法找出区别。
在这里,我们可以可视化我们的表情并检查:
我们可以看出区别就在这里,在\..
和[\..]
之间。
- 在第一个中,我们说我们必须有一个
.
后跟任何字符。
- 在第二种情况下,我们只想传递
.
或 .
之一,它等于 [.]
.
Demo for second expression
正则表达式电路
jex.im 可视化正则表达式:
我想你可能把这两种模式颠倒了。第二个不匹配,第一个匹配:
^(Mr|Mrs|Ms|Dr|Er)\..[A-Za-z]+$
Demo 1
^(Mr|Mrs|Ms|Dr|Er)[\..][A-Za-z]+$
Demo 2
第二个使用字符 class [\..]
删除任何正则表达式标记的特殊含义(例如,[]
中的 .
匹配文字句点而不是其特殊含义(任何字符)。第一个模式匹配文字句点,后跟除换行符以外的任何单个字符。有关详细信息,请查看上面演示链接右侧的 "Explanation"。
更新:您的模式也将匹配 Ms.underscore(标题和名称之间没有 space)。因此,请考虑以下模式,我认为它更适合您正在寻找的内容:
^(Mr|Mrs|Ms|Dr|Er)\.[ _][A-Za-z]+$
Demo 3
我正在解决这个正则表达式问题
Given a test string, s , write a RegEx that matches s under the following conditions:
s must start with Mr., Mrs., Ms., Dr. or Er.
The rest of the string must contain only one or more English alphabetic letters (upper and lowercase).
我使用了这个模式
Regex_Pattern = r'^(Mr|Mrs|Ms|Dr|Er)\..[A-Za-z]+$'
但是这个测试用例失败了"Ms._underscore",然后我尝试使用这个模式
Regex_Pattern = r'^(Mr|Mrs|Ms|Dr|Er)[\..][A-Za-z]+$'
它通过了所有测试用例,我无法找出区别。
在这里,我们可以可视化我们的表情并检查:
我们可以看出区别就在这里,在\..
和[\..]
之间。
- 在第一个中,我们说我们必须有一个
.
后跟任何字符。 - 在第二种情况下,我们只想传递
.
或.
之一,它等于[.]
.
Demo for second expression
正则表达式电路
jex.im 可视化正则表达式:
我想你可能把这两种模式颠倒了。第二个不匹配,第一个匹配:
^(Mr|Mrs|Ms|Dr|Er)\..[A-Za-z]+$
Demo 1
^(Mr|Mrs|Ms|Dr|Er)[\..][A-Za-z]+$
Demo 2
第二个使用字符 class [\..]
删除任何正则表达式标记的特殊含义(例如,[]
中的 .
匹配文字句点而不是其特殊含义(任何字符)。第一个模式匹配文字句点,后跟除换行符以外的任何单个字符。有关详细信息,请查看上面演示链接右侧的 "Explanation"。
更新:您的模式也将匹配 Ms.underscore(标题和名称之间没有 space)。因此,请考虑以下模式,我认为它更适合您正在寻找的内容:
^(Mr|Mrs|Ms|Dr|Er)\.[ _][A-Za-z]+$
Demo 3