我需要一个正则表达式模式才能在第一个点之前抓取字符串:
google.com.com
yahoo.com
192.168.1.4
我需要一个给谷歌和雅虎的正则表达式,但我的模式也抓取IP地址。我的正则表达式是r'(.*)\.(.*)
任何建议都将受到赞赏。
答案 0 :(得分:0)
我不确定行开头的空格是否有任何意义,所以我在this regex中考虑了它们:
(?:^|(?<=\s))[\w-]+(?=.[a-zA-Z])
它匹配行的开头或空格后面的子字符串,后跟一个点,然后是一个字母(而不是一个数字)。
答案 1 :(得分:0)
我假设您提供的文字是一个带换行符的字符串。在这种情况下,这将是将结果拉入列表的快速解决方案。
re.findall(r'^\s*([a-zA-Z]+)\.', str, re.MULTILINE)
re.MULTILINE通过允许使用&#39; ^&#39;来简化事情。匹配每行的开头。
这会产生['google', 'yahoo']
。
有关正则表达式的说明,请参阅下面的详细版本。 (也适用于记录目的)
re.findall(r'''
^ # beginning of each line (multiline mode)
\s* # zero or more whitespace characters
([a-zA-Z]+) # captures one or more characters a-z case-insensitive (just in case)
\. # matches '.'
''', str, re.MULTILINE | re.VERBOSE)