[英]RegEx - Not parsing dot(.) at the end of a sentence
C#.Net4.5
我有以下regEx表达式
^([0-9A-Z.]?[0-9a-z.]*\b\s*)+$
这应该做的是匹配一个句子,句子中的单词可能在单词的开头有一个大写但不在第一个单词之后,并且在句子内的任何地方都可以有一个点(。)。
表达词语如下
但是如果点位于单词的末尾则不起作用
如果点(。)位于单词的末尾,为什么这不起作用?
您不需要单词边界\\b
因为字符是受限制的
至[A-Za-z.\\s]
为什么不保持简单,只强制[AZ]
只能存在于空格上
边界。 (下面, \\s
为了简洁而替换为\\h
)
^\\h*(?:(?<!\\S)[AZ]|[\\da-z.\\h]+)+$
^ # BOS
\h* # Optional leading whitespace
(?: # Cluster group start
(?<! \S ) # Whitespace boundary before capital
[A-Z] # Single capital letter
| # or,
[\da-z.\h]+ # Multiple digits, lower case letters, dots or whitespace
)+ # Cluster group end, do 1 to many times
$ # EOS
谢谢您的帮助。 我相信我终于有了答案
^(\s*[0-9A-Z.]?[0-9a-z.]*\b\s*[.|\s]*)+$
我需要\\ b的原因是因为我需要模式与单词中间有大写字母的单词不匹配。 当删除/ b时,模式将匹配单词中间带有大写字母的单词
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.