使用正则表达式将单词隔离为具有特定分隔符的文本

时间:2014-11-06 10:46:13

标签: regex yahoo-pipes

我想隔离前。 3个单词到长文本

//more text
word word word (15:00 - - - 16:00 - - - 21:00)
//text ...

此时我想用正则表达式将时间分隔成括号,但我想以这种格式返回15:00,16:00,21:00

我尝试了3个字符串'\).*' replace with ' ' '.*\(' replace with ' ''---' replace with ', '问题是,文本中可能还有其他括号,然后它就不会像这里一样工作:< / p>

(word) word word (19:00 - - - 20:00 - - - 21:00) asd asd asd (text text)

我仅限于替换操作,因为雅虎管道不是一种编程语言。

2 个答案:

答案 0 :(得分:0)

您只能提取看起来像numbernumbercolumnnumbernumbernumber的字符串:

var result = str.match(/\b\d\d:\d\d\b/g);

结果将是一个包含所有匹配项的数组

demo

答案 1 :(得分:0)

所以你只能做替换操作吗?因为提取在这里会更有意义。

要求和变量不是很清楚。显然(从评论中)可能会有一个你想要保留的前面和后面的括号。是否只有3次?或者可能是2或4?

此版本假设您想要保留的括号中总有3次,其前面的所有其他内容都会被捕获。

^(?:[^(]|\((?!(?:\d{1,2}:\d{2}[\s-]*){3}))*\(

Regular expression visualization

Debuggex Demo

所以这个正则表达式通过说&#34;匹配行的开头,然后是不是((的所有内容来选择所有内容。 39; t后跟3个时间符号,它们之间只有空格(\s)和/或-&#34;

之后你可以这样做:

'\).*' replace with ''
'[\s-]+' replace with ', '