Python正则表达式匹配单词

时间:2015-08-10 06:37:54

标签: python regex

例如,如何匹配句子_ab中的第二个_ab_ab is a test?我尝试\>来匹配词尾,但不适用于Python 2.7。注意:我匹配的不是字符串的结尾,而是单个单词的结尾。

其他帖子中有隐含的答案。但我认为应该提倡对这个问题作出简单而直接的回答。所以我在没有直接和&简明找到解决方案。

  1. Python Regex to find whitespace, end of string, and/or word boundary

  2. Does Python re module support word boundaries (\b)?

4 个答案:

答案 0 :(得分:7)

您可以在最后使用字边界\b。请注意,在\b之前添加_ab无法正常工作,因为在下划线之前存在b word char )。 \b匹配单词字符和非单词字符(反之亦然)。

r'_ab\b'

答案 1 :(得分:4)

_ab(?!\w) #if you want `_` as word character

_ab(?![a-zA-Z0-9]) 

您只需使用lookahead表示结束语。

import re
p = re.compile(r'_ab(?!\w)') #consider underscore also as a word character. 

p = re.compile(r'_ab(?![a-zA-Z0-9])')

test_str = "_ab_ab"

re.findall(p, test_str)

答案 2 :(得分:2)

使用r'\>'而非'\>'

我在阅读这篇文章后找到了这个解决方案:https://stackoverflow.com/a/3995242/2728388

在Python中使用re模块时,请记住Python’s raw string notation,添加r前缀以转义正则表达式中的反斜杠。

任何其他解决方案,例如使用字边界\b

答案 3 :(得分:-1)

我的问题是

正常情况: (p_esco_link-> t_sco> 0))

替换为 (p_esco_link-> _ sco_piconet_instantiate_anchor.t_sco> 0))

返回p_esco_link-> t_sco;

替换为 return p_esco_link-> _ sco_piconet_instantiate_anchor.t_sco;

异常情况: t_sco_info * p_sco_link;

替换为 _sco_piconet_instantiate_anchor.t_sco_info * p_sco_link; -----示例end ------

此替换api的特征是:     标签前没有空格,而标签下也没有空格。当使用_表示空格时,替换大小写为:     xxxx [target] _

所以我我们遵循以下代码,但是它不起作用!

Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        currentTime.set(Calendar.ZONE_OFFSET, TimeZone.getTimeZone("UTC").getRawOffset());
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, currentTime.get(Calendar.HOUR_OF_DAY));
        calendar.add(Calendar.HOUR, 4);
        Log.d(TAG, "time: " + calendar.getTimeInMillis());