如何使用正则表达式从python中的字符串中提取不同类型的子字符串?
作为标题,我应该从一个字符串中得到一些子字符串,它看起来像这样:“-23/45+14/9”。我需要从那个字符串中得到四个数和中间的操作符。让我困惑的是,如何只使用一个正则表达式模式来实现这一点。要求如下: 编写一个可用于提取的正则表达式patt (分子,分母,运算符,分子,分母) 来自包含分数、算术运算符和分数的字符串。你可以 假设算术运算符前后有一个空格,没有空格 在分数中围绕/字符。所有分数都有一个分子和 分母。 例如: 通常,您的代码应该处理任何运算符+、-、*和/。 注:运算符模块用于两个参数函数的算术等价物 (及其他)营办商 我这里的问题是如何只使用一个正则表达式来实现这一点。我曾想过让子字符串包含数字,停在任何不是数字的字符上,但这会错过中间的操作符。另一个想法是包含所有运算符(+-*/),并在空白处停止,但这将使前两个数字和后两个数字合并在一起。谁能告诉我如何只用一个正则表达式模式来解决这个问题?非常感谢 试试这个正则表达式:如何使用正则表达式从python中的字符串中提取不同类型的子字符串?,python,regex,Python,Regex,作为标题,我应该从一个字符串中得到一些子字符串,它看起来像这样:“-23/45+14/9”。我需要从那个字符串中得到四个数和中间的操作符。让我困惑的是,如何只使用一个正则表达式模式来实现这一点。要求如下: 编写一个可用于提取的正则表达式patt (分子,分母,运算符,分子,分母) 来自包含分数、算术运算符和分数的字符串。你可以 假设算术运算符前后有一个空格,没有空格 在分数中围绕/字符。所有分数都有一个分子和 分母。 例如: 通常,您的代码应该处理任何运算符+、-、*和/。 注:运算符模块用于两
(-?\d+)\s*\/\s*(\d+) *([+*\/-])\s*(-?\d+)\s*\/(\d+)
您可以将所需信息从组1提取到组5
说明:
-匹配可选的(?\d+)
,后跟1+个数字,并将其捕获到组1中-
-匹配0+次出现的空白,然后是\s*\/\s*
,然后是0+次出现的空白/
-匹配数字的1+次出现次数,并将其捕获到组2中(\d+)
-匹配0个以上的空格*
-匹配([+*\/-])
、+
、-
、/
中的一个运算符,并将其捕获到组3中*
-匹配0多次出现的空白\s*
-匹配可选的(?\d+)
,后跟1+个数字,并将其捕获到组4中-
-匹配0多次出现的空格,后跟\s*\/
/
-匹配数字的1+次出现次数,并将其捕获到组5中(\d+)
正则表达式支持一个“或”运算符,所以<代码> a b>代码>匹配<代码> a <代码> >代码> b>代码>问题是,我只需要中间操作符,但不需要划分符号/谢谢SOOOO,这个问题困扰了我整整一个下午,现在我学到了一些新的东西……很高兴它起作用了。请考虑选择它作为答案,如果它解决了你的问题:
(-?\d+)\s*\/\s*(\d+) *([+*\/-])\s*(-?\d+)\s*\/(\d+)