我想隔离前。 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)
我仅限于替换操作,因为雅虎管道不是一种编程语言。
答案 0 :(得分:0)
您只能提取看起来像numbernumbercolumnnumbernumbernumber的字符串:
var result = str.match(/\b\d\d:\d\d\b/g);
结果将是一个包含所有匹配项的数组
答案 1 :(得分:0)
所以你只能做替换操作吗?因为提取在这里会更有意义。
要求和变量不是很清楚。显然(从评论中)可能会有一个你想要保留的前面和后面的括号。是否只有3次?或者可能是2或4?
此版本假设您想要保留的括号中总有3次,其前面的所有其他内容都会被捕获。
^(?:[^(]|\((?!(?:\d{1,2}:\d{2}[\s-]*){3}))*\(
所以这个正则表达式通过说&#34;匹配行的开头,然后是不是(
或(
的所有内容来选择所有内容。 39; t后跟3个时间符号,它们之间只有空格(\s
)和/或-
&#34;
之后你可以这样做:
'\).*' replace with ''
'[\s-]+' replace with ', '