0

我有一个变量字段,其中存储了一个字符串,如下所示:

Field= "In Field 'fieldname':(Value1) from (DC) to (deleted)"

或者也可以是:

 Field= "In Field 'fieldname':(Value1) has changed from (DC) to (1)"

从存储在变量字段中的这个字符串中,我想在两个不同的变量中捕获值 (DC) 和 (deleted) 或 (DC) 到 (1),例如:

OldValue=DC
NewValue=deleted

OldValue=DC
NewValue=1

我在 Python 中处理这些变量,如下所示:

 OldValue,NewValue=re.findall(r'\((\d+)\)',Field)

但这仅捕获数字而不是字符串?谁能帮忙

4

2 回答 2

0

您可以将现有更改re为:

>>> re.search(r'from \((.*?)\) to \((.*?)\)$', Field).groups()
('DC', 'deleted')
于 2013-04-22T22:02:48.243 回答
0

\d在正则表达式中仅匹配数字。为了匹配字母(\w)和数字(\d),最好的解决方案是两者的字符类([\d\w])。

注意:这也会(Value1)在你的字符串中捕获。您需要一些代码来过滤掉它;或者,只需修改元组:

ValueName, OldValue, NewValue = tuple(re.findall(r'\(([\d\w]+?)\)', Field))

笔记:

  1. 修饰符匹配 s的+?最小可能非零数[\d\w](与 s 不同+,它匹配最大可能数)。
  2. tuple()必要将返回的列表转换为re.findall左侧可以理解的元组。
于 2013-04-22T22:04:51.667 回答