首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java RegEx以任何形式组合模式

Java RegEx以任何形式组合模式
EN

Stack Overflow用户
提问于 2017-05-19 19:11:35
回答 1查看 90关注 0票数 1

我在试着匹配一些法律文件的链接。我已经过得够多了但我想我错过了什么。这是我现在的工作:

代码语言:javascript
运行
复制
(\d( )?)?(([[a-zA-Z]\.])+?) ([0-9]+?)\b:([0-9]+?)?\b

我有一个可以匹配的基地建筑女巫:

?=可选

代码语言:javascript
运行
复制
number/space?/string/space/number/:/number

但现在,我想选择匹配任何组合的休闲:

代码语言:javascript
运行
复制
-/number
,/space/number
,/space/number/-/number

这是我最好的比赛:

代码语言:javascript
运行
复制
(\d( )?)?(([[a-zA-Z]\.])+?) ([0-9]+?)\b:([0-9]+?)(, [0-9]+?)?(-[0-9]+?)?(, ([0-9]+?)-([0-9]+?)?)?\b

我可以与此相匹配:

代码语言:javascript
运行
复制
8 Law 84:145, 252-320

但不是这个:

代码语言:javascript
运行
复制
8 Law 84:145, 252-320, 458, 517-665 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-19 20:27:14

你可以用

代码语言:javascript
运行
复制
(\d+)\s*([a-zA-Z]+)\s+(\d+):(\d+)((?:-\d+|,\s\d+(?:-\d+)?)*)

regex演示

我添加的主要部分是((?:-\d+|,\s\d+(?:-\d+)?)*),它匹配并捕获到组0或多个序列:

  • -\d+ -一个连字符和1+数字
  • | -或
  • ,\s\d+(?:-\d+)? -逗号、空格、1+数字,然后是-和1+数字的可选序列。

不要忘记代码中Java字符串文字中的双反斜杠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44077439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档