选择特定文字

时间:2017-05-10 15:12:12

标签: python regex python-3.x

假设我在下面的变量中有字符串:

text='lsdkjfkj fksjf aksjdafhIncident 11202asdf jfsaldfuaeia'

我只想选择文字Incident 11202并将其保存到变量中。

此外,“突发事件”后面的数字也会发生变化。

我想知道是否有办法复制其后的任何未知字符。

2 个答案:

答案 0 :(得分:4)

你可以使用正则表达式。

尝试使用以下正则表达式:

import re
txt='lsdkjfkj fksjf aksjdafhIncident 11202asdf jfsaldfuaei2a'
print (re.findall ('Incident.\d*', txt))

>>>['Incident 11202']

什么是正则表达式?

正则表达式(简称regex或regexp)是用于描述搜索模式的特殊文本字符串

什么是findAll功能?

  

re.findall(pattern,string,flags = 0)

     

返回所有不重叠的内容   字符串中的模式匹配,作为字符串列表。字符串是   从左到右扫描,并按找到的顺序返回匹配。如果   模式中存在一个或多个组,返回列表   组;如果模式有多个,这将是一个元组列表   组。结果中包含空匹配,除非他们触摸了   另一场比赛的开始。

您可以在here

中阅读更多内容

答案 1 :(得分:2)

正如其他人所说,你需要正则表达式。这是您需要的代码,下面有一个解释:

import re

the_regex = re.compile(r'(Incident\s+\d+)')
string_to_search_in = 'lsdkjfkj fksjf aksjdafhIncident 11202asdf jfsaldfuaei2a'
matches = re.findall(the_regex, string_to_search_in)
print(matches)

Output: ['Incident 11202']

以下是代码的一步一步:

  • 第1行:导入re模块(正则表达式的缩写)
  • 第2行:将正则表达式赋给the_regex变量。我写的正则表达式将匹配以“Incident”开头的任何内容,然后是任意数量的连续空格(空格,制表符等),然后是任意数量的连续数字。该行的re.compile部分编译正则表达式以便更有效地使用
  • 第3行:指定我们希望正则表达式搜索的字符串
  • 第4行:实际匹配。 re.findall将(毫不奇怪)找到所有匹配到正则表达式并将其作为字符串返回列表
  • 第5行:打印所有输出(参见上面的输出)

<强>的正则表达式

是一个有用的工具,可帮助您查找字符串或文件中的字符序列。 Here是re的python 3.6.1文档。 Here是正则表达式的维基百科页面。