我是正则表达式的新手,我正在寻找一种方法来匹配第一个字母大写而其余字母小写的句子。
我已经尝试了一些方法(包括 IF 语句),但似乎无法得到它。
这是我的最后一个版本:
(([A-Z])([a-z]+\s|[a-z]+))+
Run Code Online (Sandbox Code Playgroud)
我一开始认为它有效,但现在接受单词中间的大写字母。
输出会像这样(每个单词大写)。
谢谢!!
要匹配以大写字母开头但没有大写字母的整个字符串,请使用
^[A-Z][^A-Z]*$
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。^匹配字符串的开头、[A-Z]匹配大写字母、[^A-Z]*匹配 0 个或多个大写字母以外的字符并$匹配字符串的结尾。
要匹配大写单词,您可以使用
\b[A-Z][a-zA-Z]*\b
Run Code Online (Sandbox Code Playgroud)
在各种正则表达式风格中,还有其他方法来匹配单词边界:
\<[A-Z][a-zA-Z]*\>\m[A-Z][a-zA-Z]*\M或\y[A-Z][a-zA-Z]*\y[[:<:]][A-Z][a-zA-Z]*[[:>:]]另外,您可以考虑使用[[:upper:]]or\p{Lu}代替[A-Z]and [[:alpha:]]or\p{L}代替来[a-zA-Z]匹配任何 Unicode 大写字母或相应的任何字母。
该表达式接受世界中间的大写字母,因为现在单词之间的空格是可选的,并且单词可以彼此碰到。
您可以采取一种更结构化的方法:一个句子必须至少有一个单词。那是
[A-Z][a-z]*
Run Code Online (Sandbox Code Playgroud)
在第一个单词之后,您可以得到任意数量的更多单词,每个单词前面都有空格。所以总共:
[A-Z][a-z]*(\s[A-Z][a-z]*)*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17823 次 |
| 最近记录: |