正则表达式提取字符串直到空格后跟括号或提取所有内容

时间:2018-01-24 10:16:17

标签: regex

我提取的名称没有括号(前面没有前导空格)。

问题是,我的正则表达式会在括号前的空白处或在没有找到括号的情况下失败。

以下是字符串:

Innere Stadt (Wien)
Leopoldstadt
Landstraße (Wien)
Wieden (Wien)
Margareten
Mariahilf
Neubau (Wien)
Josefstadt (Wien)
Alsergrund
Favoriten
Simmering
Meidling
Hietzing
Penzing (Wien)
Rudolfsheim-Fünfhaus
Ottakring
Hernals
Währing
Döbling
Brigittenau
Floridsdorf
Donaustadt
Liesing (Wien)

我的解决方案

正则表达式也提取空白:

^[^\(]+

Regex101 link

answer引导我进入以下正则表达式:

^(.+)\s\(

Regex101 Link

但是没有禁忌的条目就失败了。

1 个答案:

答案 0 :(得分:1)

您可以使用

^[^(]+(?!\S)

请参阅this regex demo

<强>详情

  • ^ - 字符串开头
  • [^(]+ - 尽可能多的(以外的一个或多个字符
  • (?!\S) - 一个不会立即跟随非空白字符的位置(必须有空格字符或字符串结尾)

或者,您可以使用

^[^(]+\b

请参阅another regex demo

有一个\b,一个单词边界,而不是前瞻。如果在(之前有多个空格,则此解决方案将不返回尾随空格(与第一个模式不同)。