Xregexp javascript 由空格分隔的可选命名组
Xregexp javascript optional named group seperated by white spaces
我正在研究支持以字母开头的命名参数的 Xregexp 表达式。这是我的表达方式:
(?:d:|duration:)(?<time>.*\S+).*(?:t:|title:)(?<title>(?:.*\S+))(?:.*(?:(?:p:|prize:)(?<prize>.*\S+)))
它运行良好,但问题是我想将 p:<prize>
组设为可选,我应该使用哪个表达式?
我也在尝试在出现白色时结束捕获space
示例:
我想要什么:
duration:1h 5m 1s title:Title test [p:prize]<-optionnal group
我想将 prize
组设为可选
匹配当前表达式:
duration:1h 5m 1s title:Title test p:Something random
小组成绩:
time
: 1h 5m 1s
title
: Title test
prize
: Something random
您需要稍微限制您的模式以摆脱 .*
这会耗尽所有后续子模式的最后一次出现。然后,每当您需要将值匹配到下一个键时,使用惰性点模式 (.*?
),并在末尾添加一个 $
(字符串结尾)锚点以确保您将获得所有带有惰性点的文本。
d(?:uration)?:(?<time>.*?)\s*t(?:itle)?:(?<title>.*?)\s*(?:p(?:rize)?:(?<prize>.*))?$
详情
d(?:uration)?:
- 一个 d:
或 duration:
(?<time>.*?)
- 组 "time":任何零个或多个字符,尽可能少,直到最左边出现的后续子模式
\s*
- 0+ 个空格
t(?:itle)?:
- title:
或 t:
(?<title>.*?)
-组"title":任意零个或多个字符,尽可能少
\s*
- 0+ 个空格
(?:
- 匹配 1 次或 0 次出现的可选非捕获组的开始:
p(?:rize)?:
- p:
或 prize:
(?<prize>.*)
- 组 "prize":任意零个或多个字符,尽可能少
)?
- 可选组结束
$
- 字符串结尾。
我正在研究支持以字母开头的命名参数的 Xregexp 表达式。这是我的表达方式:
(?:d:|duration:)(?<time>.*\S+).*(?:t:|title:)(?<title>(?:.*\S+))(?:.*(?:(?:p:|prize:)(?<prize>.*\S+)))
它运行良好,但问题是我想将 p:<prize>
组设为可选,我应该使用哪个表达式?
我也在尝试在出现白色时结束捕获space
示例:
我想要什么:
duration:1h 5m 1s title:Title test [p:prize]<-optionnal group
我想将 prize
组设为可选
匹配当前表达式:
duration:1h 5m 1s title:Title test p:Something random
小组成绩:
time
:1h 5m 1s
title
:Title test
prize
:Something random
您需要稍微限制您的模式以摆脱 .*
这会耗尽所有后续子模式的最后一次出现。然后,每当您需要将值匹配到下一个键时,使用惰性点模式 (.*?
),并在末尾添加一个 $
(字符串结尾)锚点以确保您将获得所有带有惰性点的文本。
d(?:uration)?:(?<time>.*?)\s*t(?:itle)?:(?<title>.*?)\s*(?:p(?:rize)?:(?<prize>.*))?$
详情
d(?:uration)?:
- 一个d:
或duration:
(?<time>.*?)
- 组 "time":任何零个或多个字符,尽可能少,直到最左边出现的后续子模式\s*
- 0+ 个空格t(?:itle)?:
-title:
或t:
(?<title>.*?)
-组"title":任意零个或多个字符,尽可能少\s*
- 0+ 个空格(?:
- 匹配 1 次或 0 次出现的可选非捕获组的开始:p(?:rize)?:
-p:
或prize:
(?<prize>.*)
- 组 "prize":任意零个或多个字符,尽可能少
)?
- 可选组结束$
- 字符串结尾。