正则表达式提取单引号之间的字符串修剪空格

时间:2017-02-02 13:00:42

标签: python regex

我试图使用正则表达式在单引号之间提取字符串并修剪任何前面或尾随的空格。我可以使用uri在单引号之间提取字符串,但是,它是我正在努力的修剪位。

字符串: (?<=')[^']+(?=')

我希望正则表达式提取的结果为: message sent from ' joe bloggs '

3 个答案:

答案 0 :(得分:0)

你可以采取一种方式:

'\s*([^']+?)\s*'
  • '匹配报价
  • \s*匹配可选空格,然后在匹配中忽略
  • ([^']+?)抓住你的字符串
  • \s*匹配匹配后的可选空格
  • '匹配报价

您可以在此处试用:https://regex101.com/r/vQqnaB/2

import re
my_str = "message sent from '  joe bloggs     '"

content = re.search(r"'\s*([^']+?)\s*'", my_str).groups()[0]
print('%r' % content) # 'joe bloggs'

答案 1 :(得分:-1)

如果你确实已经在单引号之间得到了文本,那么剩下的就像

一样简单
s = '  joe bloggs     '
result = s.strip()

当然你可以用正则表达式来做,在这种情况下我可以推荐优秀的https://regex101.com/

答案 2 :(得分:-1)

也许像这样的简单正则表达式可以解决这个问题:

import re
s = "message sent from '  joe bloggs     '"
extracted_text = re.search('''(?<=')\s*[^']+?\s*(?=')''', s)
print extracted_text.group().strip() # output: 'joe bloggs'

以下是此代码的作用:

  • (?<=') - 积极展望:确保匹配的文字前面有'
  • \s* - 零个或多个空格。
  • [^']+? - 没有引号的字符。
  • \s* - 零个或多个空格,再次。
  • (?=') - 积极向前看:确保匹配的文字以引号结尾。
  • 一旦匹配,您可以致电match.group()
  • 然后你留下了字符串' joe bloggs '。所以你通过调用str.strip()
  • 来摆脱空白