我创建了一个函数,它将一个字段与一个正则表达式进行比较,如果它与模式不匹配则返回0,如果匹配则返回1。我已经创建了类,所以我可以为模式匹配创建一个UDF。
function(expression,rexex) //If it matches it
本周末我一直在研究SQL服务器中的正则表达式,并且处于一个十字路口。
我基本上需要有以下模式,1次传递,0次失败。基本上我希望每个单词的第一个字母都大写:
the dog is bad - 0
The Dog Is Bad - 1
我很惭愧地说,我花了一整天才弄清楚如何识别每件作品的第一个字母,看看它是否是资本。
这是我到目前为止所拥有的。
[\p{Lu}\p{Lt}]
对于正确方向的任何帮助或推动都将不胜感激。
答案 0 :(得分:0)
这仅假定字母,每个字只有一个空格:
^((?:\b[A-Z][a-z]*\b) {0,1})+$
自由间隔:
^ //Start of line
( //(Capture)
(?: //(Non-capture)
\b // Followed by word boundary
[A-Z] // Followed by a capital letter
[a-z]* // Followed by zero or more lowercase letters
\b // Followed by word boundary
) {0,1} // Followed by either no space, or one space
)+ // One or more times
$ //End of line
答案 1 :(得分:0)
答案 2 :(得分:0)
比赛开始(^
)后跟一个或多个大写字母组((...)+
),后跟零个或多个单词字符([A-Z]
)后跟一个或多个空格,或结尾(\w*
)。
(\s+|$)
答案 3 :(得分:0)
由于您似乎想要兼容unicode,我会这样做:
(?:^|\s+)(\p{lu}\p{Ll}*)