作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正则表达式 = ^(movie|tv) (.*) (?<=season )([0-9 ]+)
输入 = tv game of thrones season 1 2 3
输出
tv
game of thrones season
1 2 3
期望的输出
tv
game of thrones
1 2 3
https://regex101.com/r/wG3aM3/954
(.*)
捕获
([0-9 ]+)
之前的所有字符串我怎样才能阻止它捕获
(?<=season )
这是之前的
([0-9 ]+)
.
(.*)
否定“季节” .即
tv game of season season 1 2 3
应该捕获
tv
game of season
1 2 3
最佳答案
您可以使用
^(movie|tv)\s*(.*?)(?:\s+season)?(?:\s+([0-9]+(?:\s+[0-9]+)*))?$
见
regex demo .
^
- 字符串开头 (movie|tv)
- 第 1 组:movie
或 tv
\s*
- 零个或多个空格 (.*?)
- 第 2 组:除换行符以外的任何零个或多个字符,尽可能少 (?:\s+season)?
- 一个可选的非捕获组匹配一个或多个空格,后跟 season
字符串 (?:\s+([0-9]+(?:\s+[0-9]+)*))?
- 一个可选的非捕获组匹配\s+
- 一个或多个空格 ([0-9]+(?:\s+[0-9]+)*)
- 第 3 组:一个或多个数字后跟零个或多个重复的一个或多个空格字符后跟一个或多个数字 $
- 字符串的结尾。 关于regex - 如何只在模式中使用一次输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65172133/
我是一名优秀的程序员,十分优秀!