首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >圣经诗篇

圣经诗篇
EN

Stack Overflow用户
提问于 2014-03-07 15:55:10
回答 4查看 3.5K关注 0票数 9

我试图匹配圣经中的任何一种形式的经文:

代码语言:javascript
复制
1 John 4:5 - 6
2 john 4:5 - 4:6
3 john 4:5 - 3 John 4:6
John 4:5 - 6
john 4:5 - 4:6
John 4:5 - 1 John 4:6
1john4:6
john 4
john 4-5
1 john 4-5

当上面的匹配的-any空间可以出现在文本字符串中的任何地方时,应该忽略上面示例中的-any空间:

这是文本John 4:5 -1 John 4:6文本john 4-5

这是我所拥有的,但几乎不起作用,并且在一长串文本中与之不匹配:

代码语言:javascript
复制
\b[a-zA-Z]+(?:\s+\d+)?(?::\d+(?:–\d+)?(?:,\s*\d+(?:–\d+)?)*)?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-07 16:08:49

这是尽可能具体的,在开头使用一个可选的大写字母,这样"jOhn“之类的东西就不匹配了。

代码语言:javascript
复制
(?:\d\s*)?[A-Z]?[a-z]+\s*\d+(?:[:-]\d+)?(?:\s*-\s*\d+)?(?::\d+|(?:\s*[A-Z]?[a-z]+\s*\d+:\d+))?
票数 2
EN

Stack Overflow用户

发布于 2014-03-07 16:03:31

我们来分析一下你的格式。

首先,我看到的主要事情是“可以有一个破折号后面跟着一些东西”,所以让我们把这个问题分成两个部分:首先处理开始位,然后是可选的破折号和结束位。

您的第一个位集中在名称上,可能前面有一个数字。在它之后有一个数字,后面可能是一个冒号,然后是另一个数字。所以我们有:

代码语言:javascript
复制
(\d*)\s*([a-z]+)\s*(\d+)(?::(\d+))?

现在是短跑之后的一段时间。这是一个数字,后面可以是名称和另一个数字。整个事件之后可能是一个冒号和另一个数字。记住,整件事都是可选的:

代码语言:javascript
复制
(\s*-\s*(\d+)(?:\s*([a-z]+)\s*(\d+))?(?::(\d+))?)?

将两者放在一起,用不区分大小写的文字将其包装起来,您将得到:

代码语言:javascript
复制
/(\d*)\s*([a-z]+)\s*(\d+)(?::(\d+))?(\s*-\s*(\d+)(?:\s*([a-z]+)\s*(\d+))?(?::(\d+))?)?/i

这取决于你有多虔诚,可以用各种丰富多彩的语言来描述。

但瑞吉斯什么时候长得漂亮了?

无论如何,在您的结果匹配中,您将拥有:

  1. 初始数
  2. 名字
  3. 第二数
  4. 冒号之后的数字
  5. 短跑后的号码
  6. 二名
  7. 名字后面的号码
  8. 第二个冒号之后的最后一个数字

当然,其中任何一个都可以是空的,除了2和3。

票数 9
EN

Stack Overflow用户

发布于 2014-03-07 16:07:25

FWIW我发现在这些情况下RegexPal是一个巨大的帮助。我的结局是:

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

其分类如下:

代码语言:javascript
复制
// zero of more digit(s) or a space
[\d ]*

// any number of upper/lowercase letters
[a-zA-Z]+

// a space followed by an optional any number of digits, a colon,
// and any number of digits again
( \d*:\d*)?)

// an optional hyphen with a space either side, or a space.
(( - )| )

对可选连字符的另一边重复,除非有此差异:

代码语言:javascript
复制
// one or more of either a colon or a hyphen
[:-]+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22254746

复制
相关文章

相似问题

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