javascript - 匹配带有 [ 字符的行,但如果它有 ] 字符则不匹配
问题描述
我认为这个正则表达式会匹配带有 a 的行[
,但如果它有 a 则不会]
:
^.*\[.*(?!\]).*$
相反,它匹配每一行[
(以粗体显示):
这[应该匹配]。此行应匹配
这条线不应该匹配。
这条线不应该匹配。这条线[不应该匹配。
如何修复该正则表达式,使其与具有 ? 的行不匹配]
?
这[应该匹配]。此行应匹配
这条线不应该匹配。
这条线不应该匹配。这条线[不应该匹配。
解决方案
此模式^.*\[.*(?!\]).*$
匹配[
并且直接跟随.*
将匹配该行的其余部分。
然后在行尾它不会]
直接断言到右边,这是真的,因为它已经在行尾了。然后.*
是可选的,它可以断言字符串的结尾。
所以它会匹配任何至少有一个单行的整行[
如果您想匹配从左到右的方括号对,[...]
并且不允许在其中使用任何括号,或者在其外部使用单个括号并匹配至少一对,您可以重复 1 次或多次匹配由可选字符包围的对而不是正方形括号。
^(?:[^\][\n]*\[[^\][\n]*\])+[^\][\n]*$
推荐阅读
- jquery - 使用数据表中的分页后引导模式未触发
- swift - How can I go back to the previous ViewController from UICollectionViewCell?
- java - 获取用户IP的正确方法
- java - 使用 Swagger UI 的基本身份验证
- jgroups - 可以将 JGroups 配置为支持工作队列吗?
- c++ - 使用转换函数直接初始化
- sql-server - 为什么即使在为用户分配系统管理员角色后 SQL Server 代理也没有显示?
- python - python plt.savefig,subplots:为什么上下图与上下表重叠
- python - 使用 BufferedReader 的最小 python 示例行为异常
- c# - 无法在 Xamarin IOS 中捕获 WkWebView 的屏幕