gpt4 book ai didi

javascript - Xregexp javascript 可选命名组,以空格分隔

转载 作者:太空宇宙 更新时间:2023-11-04 02:01:10 26 4
gpt4 key购买 nike

我正在调查 Xregexp支持以字母开头的命名参数的表达式。这是我的表达:

(?:d:|duration:)(?<time>.*\S+).*(?:t:|title:)(?<title>(?:.*\S+))(?:.*(?:(?:p:|prize:)(?<prize>.*\S+)))

它运行良好,但问题是我想把 p:<prize>组作为可选,我应该使用哪个表达式?

我还尝试在出现空白时结束捕获

示例:

我想要什么:

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

最佳答案

您需要稍微限制您的模式才能摆脱 .*这将耗尽后续子模式最后一次出现的所有内容。然后,每当您需要将值匹配到下一个键时,请使用惰性点模式( .*? ),并添加 $ 。 (字符串结尾) anchor 位于末尾,以确保您将获得带有惰性点的所有文本。

d(?:uration)?:(?<time>.*?)\s*t(?:itle)?:(?<title>.*?)\s*(?:p(?:rize)?:(?<prize>.*))?$

请参阅regex pattern .

详细信息

  • d(?:uration)?: - 一个d:duration:
  • (?<time>.*?) - 组“时间”:任何零个或多个字符,尽可能少,直到后续子模式的最左边出现
  • \s* - 0+ 空格
  • t(?:itle)?: - 要么 title:t:
  • (?<title>.*?) - 组“标题”:任何零个或多个字符,尽可能少
  • \s* - 0+ 空格
  • (?: - 可选非捕获组的开始匹配 1 或 0 次出现:
    • p(?:rize)?: -p:prize:
    • (?<prize>.*) - 组“奖品”:任何零个或多个字符,尽可能少
  • )? - 可选组的结尾
  • $ - 字符串结尾。

关于javascript - Xregexp javascript 可选命名组,以空格分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45917937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com