在Python中捕获句点之间的输入

时间:2012-11-14 02:35:05

标签: python regex

如何捕捉没有句点的句点之间的数字?

数字可以达到但小于3位数。 0< = i< 1000

示例:

  • 域。 3 .bumblebee
  • 域。 56 .mashabee
  • 域。的 898 .barista

3 个答案:

答案 0 :(得分:5)

your_string.split(".")[1] 

会给你号码

我的ipython shell中的示例: -

In [47]: your_string = "domain.3.bumblebee"

In [48]: your_string.split(".")[1]
Out[48]: '3'

您的用例并不需要正则表达式。

当然,如果你想返回整数,你需要做的只是投射它。

In [49]: int(your_string.split(".")[1])
Out[49]: 3

答案 1 :(得分:3)

关于正则表达式

正则表达式并不总是解决方案。关于使用正则表达式的引用。

  

有些人在面对问题时会想到   “我知道,我会使用正则表达式。”现在他们有两个问题。

     
    

参考:http://regex.info/blog/2006-09-15/247

  

使用regex

的可能解决方案
  1. 使用re模块进行正则表达式。这是a link to the documentation
  2. 匹配使用正则表达式r"\.(\d{1,3})\."。此匹配将找到一个字面句点,后跟一些1,2或3位数字,后跟另一个字面句点。
  3. 要帮助仅捕获数字,请使用正则表达式捕获组(...)。在这种情况下,在括号中捕获1,2或3位数的匹配。这是a link to some regex examples
  4. 您的用例的示例代码

    >>> import re
    >>>
    >>> subject = """
    ... domain.3.bumblebee
    ... domain.56.mashabee
    ... domain.898.barista
    ... """
    >>>
    >>> matches = re.finditer(r"\.(\d{1,3})\.",subject)
    >>> results = [int(match.group(1)) for match in matches]
    >>>
    >>> results
    [3, 56, 898]
    

答案 2 :(得分:0)

尝试这样做:

>>> import re
>>> text = 'domain.56.mashabee'
>>> mystr = re.compile(r'^\w+\.(\d{1,3})\.')
>>> print mystr.search(str(text)).groups()[0]
56