java - 寻求帮助在java中编写REGEX
问题描述
我需要编写一个正则表达式来检查字符串中是否有 12 | (管道)和其他 13 个单词任何不带 | 的字符 管道(数字字母和特殊字符)。正则表达式的输入是:
00000003 | 1 | 1 |0 | 测试名称 | 主要@email.com | 街道 | 城市| 状态 | 邮政编码 | 英国 | 描述 | 30
我试图像这样构建它:
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])+(\|{1})+
([A-Za-z0-9!"#$%&'()*+,./:;<=>?@\^_`{}~-])
但正则表达式不检查 12 个管道。另外,我尝试构建这个正则表达式
1)
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])([\|])
(?:[^|])
2)
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])\|
(?:[^|])
3) (/|{12})
他们都没有为我工作。有什么建议吗?
解决方案
你应该使用这个:^(?:[^\|]+\|){12}[^\|]+$
如此正确地转义为 Java 字符串:String pattern = "^(?:[^\\|]+\\|){12}[^\\|]+$";
内容如下:
^
: 从表达式的开头
(?:[^\|]+\|)
: 找一堆非|| 后跟一个 | . (?: 事情是针对非捕获组的。它告诉正则表达式引擎您实际上并不关心字段值,只是它就在那里。这是一种优化。
{12}
: 正好 12 次
[^\|]+
: 那么最后一个第 13 场非|
$
: 到那时你应该到达表达式的结尾
实际示例:https ://www.regexplanet.com/share/index.html?share=yyyydfv274d
我相信你已经知道了,但为了完整起见,这里是 Java 中的所有正则表达式标记及其含义: https ://docs.oracle.com/javase/7/docs/api/java/util/regex/模式.html
推荐阅读
- excel - 日期自动修改为其他内容
- jquery - 如何在页面重新加载时删除类/添加类
- android - Okhttp Authenticator addHeader() vs header()
- firebase - Firebase 无法更新值
- python - 我怎么可能创建一个模型的动态 REST API 链接,该链接会根据另一个模型的 id 进行更改?
- oracle - Oracle Developer Tools for Visual Studio 2017 安装无法启动
- css - 如何在角度选择新列表项时删除先前选择的列表项的活动类
- c - 在 accept() 之前拒绝客户端的 TCP 连接请求
- azure-data-explorer - 在 Kusto 中将对象列表转换为表格
- reactjs - 当孩子不受我控制时,如何让反应孙子节点进行渲染