如何改进我的正则表达式以包含空格和另一个选项?

时间:2012-05-06 02:16:21

标签: regex

我当前的正则表达式通过在第一个连字符之前找到所有内容来工作:

(?<=^)(.*?)(?=-)。例如,在以下字符串中:

  

这是我想要的文字 - 不想要的文字 - 更多不想要的文字

它找到“这是我想要的文字”。但是在以下字符串中:

  

这是我想要的文字 - 不想要的文字 - 更多不想要的文字

它只找到“这就是”。

我想修改我的正则表达式,直到找到第一个“ - ”,包括空格。我也希望连字符可以与“〜”互换。所以我希望找到所有内容,直到第一个“ - ”或“〜”。我尝试将其修改为:

(?<=^)(.*?)(?=(\s-\s|\s~\s)) 然而,这是不行的。有谁能指出我正确的方向?

1 个答案:

答案 0 :(得分:2)

你为什么要使用后视和前瞻?整个表达式是不必要的复杂,%是非标准的。

^(.*?)(?: [-~] |$)

会做你想要的。它从行的开头开始,然后匹配所有内容,直到“带空格的连字符或波浪号”或行的结尾。 (?:...)是一个非捕获组,需要对两个备选方案进行分组。