我有很长的正则表达式,里面有两个复杂的子模式。我如何以任何顺序匹配这些子模式?
简化示例:
/(apple)?\s?(banana)?\s?(orange)?\s?(kiwi)?/
我想匹配两者
apple banana orange kiwi
apple orange banana kiwi
这是一个非常简化的例子。就我而言banana
,orange
这是很长很复杂的子模式,我不想做类似的事情
/(apple)?\s?((banana)?\s?(orange)?|(orange)?\s?(banana)?)\s?(kiwi)?/
是否可以对字符类中的字符等子模式进行分组?
根据要求 UPD 真实数据:
14:24 26,37 Mb
108.53 01:19:02 06.07
24.39 19:39
46:00
我的琴弦要长得多,但它是重要的部分。在这里你可以看到我需要匹配的两行。第一个有两个值:length
(14 分 24 秒)和size
26.37 Mb。第二个有三个值,但顺序不同:size
108.53 Mb, length
01 h 19 m 02 s 和date
June, 07 第三个有两个size
,length
第四个只有length
几个变化,我需要解析所有值。
我有一个非常接近的正则表达式,除了我不知道如何在不写两次的情况下以不同的顺序匹配模式。
(?<size>\d{1,3}\[.,]\d{1,2}\s+(?:Mb)?)?\s?
(?<length>(?:(?:01:)?\d{1,2}:\d{2}))?\s*
(?<date>\d{2}\.\d{2}))?
注意:这只是已经分叉好的大正则表达式的一部分。