从正则表达式匹配中仅排除拖尾空格字符

时间:2018-02-12 00:49:45

标签: regex

我正在尝试从地址字符串中仅选择街道/单元号。

我的正则表达式是import pandas as pd index = pd.MultiIndex.from_tuples([('one', '1993-02-02'), ('one', '1994-02-03'), ('two', '1995-02-18'), ('two', '1996-03-01')]) s = pd.DataFrame(np.arange(1.0, 5.0), index=index) s.rename(columns = {0 : 'test1'}, inplace = True) s.index.set_names(['name','date'], in place=True) index = pd.MultiIndex.from_tuples([('one', '19930630'), ('one', '19940630'), ('two', '19950630'), ('two', '19960630')]) d = pd.DataFrame(np.arange(1.0, 5.0), index=index) d.rename(columns = {0 : 'test2'}, inplace = True) d.index.set_names(['name','date'], in place=True)

目前,我的正则表达式在任何字母字符之前匹配/^[\d\s,\-\/]*/ digits '/''-'。但是我想排除拖尾space characters

我的正则表达式匹配

space character新南威尔士州曼利路悉尼路(请注意' 2'之后的空格字符)

而不是

61/2悉尼路,曼利新南威尔士州

以下是一些示例地址字符串:

61/2

61/2 Sydney Road, Manly NSW

61-2 Sydney Road, Manly NSW

1 个答案:

答案 0 :(得分:3)

由于您的预期匹配不是空字符串(并且您的当前表达式 - /^[\d\s,\-\/]*/ - 如果字符串的开头没有[\d\s,\-\/]*模式匹配,则匹配空字符串)并且总是有一个数字在比赛结束时,您可以在模式的末尾添加\d

/^[\d\s,\/-]*\d/
             ^^

请参阅regex demo

模式详情

  • ^ - 字符串锚的开始
  • [\d\s,\/-]* - 零个或多个数字,空格,,/-(请注意,当它位于非常位置时无需转义连字符字符类的结尾)
  • \d - 数字。