0

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

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

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

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

这是我想要的文本-不想要的文本-更不想要的文本

它只找到“This is the”。

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

(?<=^)(.*?)(?=(\s-\s|\s~\s)) 但是 tis 不起作用。谁能指出我正确的方向?

4

1 回答 1

2

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

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

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

于 2012-05-06T03:26:19.010 回答