假设我有正则表达式如下:[a-z] {1,28}
根据下面给出的两个匹配,这将匹配以下字符串:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
比赛1
完全匹配0-28 abcdefghijklmnopqrstuvwxyzab
比赛2
完全匹配28-52 cdefghijklmnopqrstuvwxyz
我想只匹配28个或少于28个字符。这意味着如果我的字符串大于28个字符,我的验证将失败。
请告知上述问题。我所面临的问题是在我定义此验证xsd模式时(xs:pattern value =“[a-z] {1,28}”)
提前致谢
答案 0 :(得分:0)
使用单词边界\b
表示所需的序列:
echo "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" | egrep '\b[a-z]{1,28}\b'
# won't find the matches
echo "abcdefghijklmnopqrstuvwxyzab abc" | egrep -o '\b[a-z]{1,28}\b'
输出:
abcdefghijklmnopqrstuvwxyzab
abc
答案 1 :(得分:0)
匹配字符串的开头/结尾。
str="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
# Your solution.
if [[ $str =~ [a-z]{1,28} ]]; then
echo "First match"
fi
# Solution `matching complete line
if [[ $str =~ ^[a-z]{1,28}$ ]]; then
echo "Second match"
fi