繁体   English   中英

正则表达式获取(逗号或空格)和固定字符串之间存在的字符串

[英]Regex to grab a string present between (comma or whitespace) and fixed string

我想要一个介于(逗号或空格)和一个字符串之间的字符串。

我使用的代码是

re.findall('[,]?[\s]*(.*?)[.]calc', string)

我运行这个的输出

String 1 = "Select ID, Deliveryid.calc"
Result = Deliveryid
String 2 = "Select Deliveryid.calc"
Result = Select Deliveryid.calc

现在对于字符串二,我只想要 Deliveryid 而不是洞。 基本上我想要“.calc”和“空格或逗号”之前的字符串。 在逗号和空格的情况下,它可以是任何人或两者

也可以有换行符或制表符。 基本上任何类型的空格和逗号。 两者都可以在场或任何人。

仅供参考 - 我想要字符串中的所有匹配字符串。 可以有一个或多个

您可以使用

[\s,]([^\s,]*)\.calc

请参阅正则表达式演示 细节:

  • [\\s,] - 一个空格或逗号
  • ([^\\s,]*) - 第 1 组:除空格和逗号以外的任何零个或多个字符
  • \\.calc - .calc字符串。

请参阅Python 演示

import re
text = 'Select ID, Deliveryid.calc Select ID, Deliveryid.calc Select ID, Deliveryid.calc\nSelect Deliveryid.calc Select Deliveryid.calc'
print( re.findall(r'[\s,]([^\s,]*)\.calc', text) )
# => ['Deliveryid', 'Deliveryid', 'Deliveryid', 'Deliveryid', 'Deliveryid']

稍微修改了正则表达式

import re
String1 = "Select ID, Deliveryid.calc"
String2 = "Select Deliveryid.calc"
m1 = re.search('[, ]([^, ]*?)[.]calc', String2)
print ('->' + m1.group(0) + '<-')
print ('->' + m1.group(1) + '<-')

我认为你应该得到 group(1) 的价值。

您必须使用贪婪的正则表达式运算符。 尝试这个:

^[^.]+

它将匹配点之前的所有内容 注意:当使用贪婪运算符时,您将匹配最后一个 .(dot) 而不是第一个之前的所有内容。 根据您的字符串,它匹配 .calc 之前的所有内容

在此处输入图片说明

如果您只想要 .(dot) 之前的一个词,那么“Wiktor Stribiżew”已经帮您解决了这个问题。 他的表达方式对我也有类似的作用。 在此处输入图片说明

快乐学习!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM