如题所述
String regex = "^((.+,)?\\s*,.+)|(.+,\\s*)$";
首先:^$出现在表达中表示这将要求整串匹配
再次:限定了两个匹配分支,即:^(.+,)?\\s*,.+)和(.+,\\s*)$ 意为:其中之一匹配成功即宣告成功。
解释前半部:(后面一样)
.+,表示为:必须匹配任意字符至少一次至多不限并且在该模式后必须有一个,(逗号)即:abcdef@#$%!!!@#$!@$,或者1234123lkasdfjlj@#$#$,,,,,,,,,
(.+,)?表示为对上面↑解释的模式或者出现一次或者不出现。
\\s*,.+表示在上面的模式出现(或者不出现)后尽可能的去寻找若干空白符(空格、制表符、回车、换行等不可见字符),当然,找不到也不要紧。在此之后必须找到,(逗号)最后是任意字符若干次。
至此,前半部分解释完了。后面自己思考吧。
最后说明:^(.+,)?\\s*,.+)和(.+,\\s*)$
这两个分支的意思是:查找以(.+,)?\\s*,.+)开头或者以(.+,\\s*)结尾的,两者符合其一就算匹配成功。
给出匹配的文本:
第一个分支:
abcef1234, ,ghijk
,a
,2
第二个分支:
a, 前面是空白
b,没有空白
alsdkfj12340591023458,,,,,,,,,,,
希望我说明白了。
首先:^$出现在表达中表示这将要求整串匹配
再次:限定了两个匹配分支,即:^(.+,)?\\s*,.+)和(.+,\\s*)$ 意为:其中之一匹配成功即宣告成功。
解释前半部:(后面一样)
.+,表示为:必须匹配任意字符至少一次至多不限并且在该模式后必须有一个,(逗号)即:abcdef@#$%!!!@#$!@$,或者1234123lkasdfjlj@#$#$,,,,,,,,,
(.+,)?表示为对上面↑解释的模式或者出现一次或者不出现。
\\s*,.+表示在上面的模式出现(或者不出现)后尽可能的去寻找若干空白符(空格、制表符、回车、换行等不可见字符),当然,找不到也不要紧。在此之后必须找到,(逗号)最后是任意字符若干次。
至此,前半部分解释完了。后面自己思考吧。
最后说明:^(.+,)?\\s*,.+)和(.+,\\s*)$
这两个分支的意思是:查找以(.+,)?\\s*,.+)开头或者以(.+,\\s*)结尾的,两者符合其一就算匹配成功。
给出匹配的文本:
第一个分支:
abcef1234, ,ghijk
,a
,2
第二个分支:
a, 前面是空白
b,没有空白
alsdkfj12340591023458,,,,,,,,,,,
希望我说明白了。
温馨提示:答案为网友推荐,仅供参考