C# Regex,它对某些类型更为重要
我正在尝试匹配城市、州、邮编,但它们都是可选的。 规则是,如果我找到5个数字,它就是一个拉链。如果我找到两个字母,那就是状态。 剩下的就是城市 分隔符可以是空格、逗号,也可以是难看的句点 我想到了这个:C# Regex,它对某些类型更为重要,c#,regex,C#,Regex,我正在尝试匹配城市、州、邮编,但它们都是可选的。 规则是,如果我找到5个数字,它就是一个拉链。如果我找到两个字母,那就是状态。 剩下的就是城市 分隔符可以是空格、逗号,也可以是难看的句点 我想到了这个: ^(?<CITY>[A-Z ]*)[ ,]+(?<STATE>[A-Z]{2})?\.?([ ,]+(?<ZIP>[0-9]{5}))?$ 但它没有强调邮政和州规则。所以我错过了几个场景。最后4个不起作用 我如何执行这个规则?一些原子弹?有人展望未来吗?我刚
^(?<CITY>[A-Z ]*)[ ,]+(?<STATE>[A-Z]{2})?\.?([ ,]+(?<ZIP>[0-9]{5}))?$
但它没有强调邮政和州规则。所以我错过了几个场景。最后4个不起作用
我如何执行这个规则?一些原子弹?有人展望未来吗?我刚把它们做成了可选的分离器
^(?<CITY>[A-Z ]*)?([ ,]+)?(?<STATE>[A-Z]{2})?\.?(([ ,]+)?(?<ZIP>[0-9]{5}))?$
^(?[A-Z]*)([,]+)([A-Z]{2})吗?([,]+)([0-9]{5})吗$
请看我刚把它们做成了可选的分离器
^(?<CITY>[A-Z ]*)?([ ,]+)?(?<STATE>[A-Z]{2})?\.?(([ ,]+)?(?<ZIP>[0-9]{5}))?$
^(?[A-Z]*)([,]+)([A-Z]{2})吗?([,]+)([0-9]{5})吗$
请参见您可以使用的
^(?<CITY>[A-Z ]*?)(?:[ ,]*\b(?<STATE>[A-Z]{2})\.?)?(?:[ ,]*\b(?<ZIP>[0-9]{5}))?$
^(?[A-Z]*?)(?:[,]*\b(?[A-Z]{2})\.?)(?:[,]*\b(?[0-9]{5}))$
或者,如果城市部分可能包含任何字符,则将[A-Z]*?
替换为*?
。将文本空间替换为\s
,以匹配任何空白字符
详细信息
-字符串的开头^
-城市组:任何0+大写ASCII字母或空格,尽可能少(?[A-Z]*?)
-可选模式匹配(?:[,]*\b(?[A-Z]{2})\?)?
-零个或多个空格或逗号[,]*
-单词边界\b
-状态组:两个大写ASCII字母(?[A-Z]{2})
-可选点\?
-可选模式匹配:(?:[,]*\b(?[0-9]{5}))?
-零个或多个空格或逗号[,]*
-单词边界\b
-邮政编码组:五位数字(?[0-9]{5})
-字符串结束$
^(?<CITY>[A-Z ]*?)(?:[ ,]*\b(?<STATE>[A-Z]{2})\.?)?(?:[ ,]*\b(?<ZIP>[0-9]{5}))?$
^(?[A-Z]*?)(?:[,]*\b(?[A-Z]{2})\.?)(?:[,]*\b(?[0-9]{5}))$
或者,如果城市部分可能包含任何字符,则将[A-Z]*?
替换为*?
。将文本空间替换为\s
,以匹配任何空白字符
详细信息
-字符串的开头^
-城市组:任何0+大写ASCII字母或空格,尽可能少(?[A-Z]*?)
-可选模式匹配(?:[,]*\b(?[A-Z]{2})\?)?
-零个或多个空格或逗号[,]*
-单词边界\b
-状态组:两个大写ASCII字母(?[A-Z]{2})
-可选点\?
-可选模式匹配:(?:[,]*\b(?[0-9]{5}))?
-零个或多个空格或逗号[,]*
-单词边界\b
-邮政编码组:五位数字(?[0-9]{5})
-字符串结束$
请不要像这样链接到外部网站。请在问题中填写完整答案-显示输入、输出、代码和解释-然后链接到外部网站,为您的内容提供支持。我已填写完整答案(正则表达式)我已经链接到regex站点,该站点显示了regex应用于OP共享的示例,以举例说明regex如何应用于其数据的每一行。有什么问题吗?请解释正则表达式,并说明如何在您的答案中应用正则表达式。你应该有一个完整的答案,然后再链接到任何地方。外部链接可能会断开,因此强烈建议不要使用。该正则表达式不起作用。你可以看到,作为一个城市,你几乎匹配所有东西。请不要像这样链接到外部网站。请在问题中填写完整答案-显示输入、输出、代码和解释-然后链接到外部网站,为您的内容提供支持。我已填写完整答案(正则表达式)我已经链接到regex站点,该站点显示了regex应用于OP共享的示例,以举例说明regex如何应用于其数据的每一行。有什么问题吗?请解释正则表达式,并说明如何在您的答案中应用正则表达式。你应该有一个完整的答案,然后再链接到任何地方。外部链接可能会断开,因此强烈建议不要使用。该正则表达式不起作用。你可以看到,你几乎把所有的东西都当作一个城市来匹配。重点是将惰性匹配与第一组+可选的非捕获组结合起来,并在+边界内使用强制性模式(第二组和第三组命名),以确保第二组和第三组作为一个整体出现时匹配。原子组在这里会阻止回溯,它们在这里没有帮助。重点是将惰性匹配与第一组+可选的非捕获组结合起来,并在+边界内使用强制性模式(第二组和第三组命名),以确保第二组和第三组作为整个单词出现时匹配。原子组在这里会阻止回溯,他们在这里不会有帮助。