python - 如何在字符串中查找正值或负值?

标签 python regex string

我在 Python 3.3 中的一个小程序有问题,它应该从字符串返回一个数字。

虽然它适用于正值,

text = "XXXXXXX\nDateMinEnd=230\nXXXXXXX\n"
Dmin = re.search('(?<=DateMinEnd=)\w+',text)
Dmin_res = int(Dmin.group())
print(Dmin_res)
230

负值的结果为“无”:

text = "XXXXXXX\nDateMinEnd=-230\nXXXXXXX\n"
Dmin = re.search('(?<=DateMinEnd=)\w+',text)
Dmin_res = int(Dmin.group())

'NoneType' object has no attribute 'group'

我真的是一个初学者,所以我会很感激任何提示(当然,在问你之前我已经看过 http://docs.python.org/2/library/re.html 并尝试了原始字符串和几个特殊的转义,但不幸的是我找不到解决方案)。提前致谢。

安德烈亚斯

最佳答案

如果你只需要支持整数,你可以在你的\w前面添加一个可选的-:

Dmin = re.search('(?<=DateMinEnd=)-?\w+',text)

此外,\w 也匹配非数字,因此您可能需要使用 \d(对于 digit):

Dmin = re.search('(?<=DateMinEnd=)-?\d+',text)

编辑

如果您需要支持非整数,请使用以下正则表达式:

Dmin = re.search('(?<=DateMinEnd=)-?\d*\.?\d+',text)

让我们分解一下:

-?  # optional negation
\d* # zero or more digits
\.? # optional decimal point (. is special so we need to escape it)
\d+ # one or more digits

关于python - 如何在字符串中查找正值或负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17987521/

相关文章:

java - 我使用正则表达式删除字符串中的重复单词

regex - 解析 ps 的 "etime"输出并将其转换为秒

c++ - 如何将 char* argv[] 转换为 std::regex?

如果我不打印,char * 会消失吗?

python - 哪种方法最适合在discord.py 中启动机器人?登录()和连接()与开始()与运行()

python - 将对象或对象数组发布到 API

python - 带共享 session 的 Django ORM 的 Tornado WebSocket

ruby - 如何从 Ruby 中特定索引处的字符串中删除字符

c++ - std::string 和多重连接

python - 机器学习防止过拟合这是作弊吗?