我正在尝试编写一个正则表达式,用于识别字符串是否包含由.
分隔的非空标记(经过修剪(,即以下形式。这是我想到的最好的。
Pattern.compile("^(?!\.)(?!.*\.$)(?!.*?\.\.)(?!\p{Space}$)(?!\p{Space}\.)(?!.*\.\p{Space}$)[\p{Graph}\p{Space}]+$", Pattern.UNICODE_CHARACTER_CLASS);
单元测试出现在以下代码中:https://ideone.com/kuej3D
这适用于所有情况。I、 然而,感觉还有更好的方法可以做到这一点。
例如,
如何检查表格格式,
<s1><.s2>*
s1
是修剪前导空格和尾随空格后的非空字符串。
.
是文字周期
s2
是在修剪前导和训练空间之后的非空字符串。
CCD_ 6表示出现次数可以是最小的0和最大的无限。
例如:
alpha$#@.ksj`\c.lijd*3260_+
是有效的字符串
a b. c d. e f
是有效的字符串
alpha.
是无效字符串
.beta
是无效字符串
空字符串是无效字符串
是无效字符串
true
是无效字符串
上述表意代码中的所有测试用例都应打印.
。
试试这个正则表达式:
"\s*[^.\s]+\s*(\.\s*[^.\s]+\s*)*"
对于修剪,它匹配每个点的开头、前后和结尾的可选空格。不修剪可能更容易阅读:
"[^.\s]+(\.[^.\s]+)*"
此模式匹配不是点而不是空格的东西,可以选择后面跟多次CCD_14和不是点而非空格的东西。