所以基本上我有一段单词,并且有三种可能的模式来标记该段落的结尾,例如 regex1、regex2 和 regex3 全部采用/.*?(?=something)/格式。如果段落中不存在这些内容,我将返回整个段落。如果全部存在,我想匹配第一个正则表达式之前的单词。假设这是输入:

 word word word word regex3 word word word regex2 word word regex1 

在这种情况下我想返回前四个单词。如果是:

 word word word word regex1 word word word regex3 word word regex2 

在这种情况下我仍然想返回前四个单词

另一个可能的输入可能是:

 word word regex1 word word word regex1 word regex2 regex3 

在这种情况下,我只需要前 2 个单词

我能想到的一种“令人讨厌”的方法是执行一大堆嵌套的 if else,但这需要很长时间才能让我的程序运行。有什么想法吗?

请您参考如下方法:

奇怪的情况,但我会做的是根据正则表达式分割你的字符串(我会将它们全部组合成一个正则表达式),然后返回结果数组中的第一个字符串

所以类似

thestring.split(/regex1|regex2|regex3/)[0] 

如果你的正则表达式又长又粗,你可能可以链接上面的内容并仍然得到相同的结果

thestring.split(/regex1/)[0].split(/regex2/)[0]...etc 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!