Return 使用正则表达式在 python 中以列表形式出现的所有字符串
Return all the occurrences from a string as a list in python using regular expression
假设我有这样一个字符串:
exp = 'CASE WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN \'YES\' ELSE \'NO\' END'
我想return所有出现的时间和时间之间的文本。
这是预期的输出
['"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\'',
'"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\'']
我试过的是这样的:
res = re.findall(r'\s*(WHEN|When|when)+\s*(.*)\s*(THEN|Then|then)+\s*')
但结果列表在我的例子中显示了这个输出
['(WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN)']
使用 ?
使其成为非贪婪的:
re.findall("when *(.+?) *then", exp, re.I)
输出:
['"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\'',
'"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\'']
试试这个:
import re
exp = """CASE WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN \'YES\' ELSE \'NO\' END"""
x = re.findall("WHEN.*THEN", exp)
if x:
print(x)
else:
print("!!!")
假设我有这样一个字符串:
exp = 'CASE WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN \'YES\' ELSE \'NO\' END'
我想return所有出现的时间和时间之间的文本。
这是预期的输出
['"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\'',
'"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\'']
我试过的是这样的:
res = re.findall(r'\s*(WHEN|When|when)+\s*(.*)\s*(THEN|Then|then)+\s*')
但结果列表在我的例子中显示了这个输出
['(WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN)']
使用 ?
使其成为非贪婪的:
re.findall("when *(.+?) *then", exp, re.I)
输出:
['"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\'',
'"Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\'']
试试这个:
import re
exp = """CASE WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'CPU\' THEN \'YES\' WHEN "Expressions"."PRODUCT_CATEGORIES"."CATEGORY_NAME"=\'RAM\' THEN \'YES\' ELSE \'NO\' END"""
x = re.findall("WHEN.*THEN", exp)
if x:
print(x)
else:
print("!!!")