正则表达式匹配验证少于n次或n次

时间:2017-03-10 08:18:22

标签: regex bash xsd ksh xsd-validation

假设我有正则表达式如下:[a-z] {1,28}

根据下面给出的两个匹配,这将匹配以下字符串:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

比赛1
完全匹配0-28 abcdefghijklmnopqrstuvwxyzab

比赛2
完全匹配28-52 cdefghijklmnopqrstuvwxyz

我想只匹配28个或少于28个字符。这意味着如果我的字符串大于28个字符,我的验证将失败。

请告知上述问题。我所面临的问题是在我定义此验证xsd模式时(xs:pattern value =“[a-z] {1,28}”)

提前致谢

2 个答案:

答案 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
相关问题