Python Regex用于分隔字符串列表和Regex
我有一个包含字符串和正则表达式的python输入列表Python Regex用于分隔字符串列表和Regex,python,regex,regex-negation,Python,Regex,Regex Negation,我有一个包含字符串和正则表达式的python输入列表 str_regex = ['normal_string_1', ''^(?![_\-])[A-Za-z0-9\-_]+$', 'normal_string_2'] 我需要将这个列表分为字符串列表和正则表达式列表。 以下是输入和所需输出的总结 输入: ['normal_string_1', ''^(?![_\-])[A-Za-z0-9\-_]+$', 'normal_string_2'] 输出: ['normal_string_1', '
str_regex = ['normal_string_1', ''^(?![_\-])[A-Za-z0-9\-_]+$', 'normal_string_2']
我需要将这个列表分为字符串列表和正则表达式列表。
以下是输入和所需输出的总结
输入:
['normal_string_1', ''^(?![_\-])[A-Za-z0-9\-_]+$', 'normal_string_2']
输出:
['normal_string_1', 'normal_string_2'], ['^(?![_\-])[A-Za-z0-9\-_]+$']
我正计划成立一个正则表达式来做这件事。类似于“应该只包含
[A-Z]
和[A-Z]
”的内容。这是最好的方法吗?如果我正确理解您的问题,您希望将字符串与不同正则表达式的列表一起传递给函数,返回匹配的正则表达式。这应该可以做到:
import re
def contains(string, regexes):
lst = []
for regex in regexes:
match = re.findall(regex, string)
if len(match) > 0 and len(match[0]) == len(string):
return string + " contains only \"" + regex + "\""
return "No matching regex was found"
if __name__ == "__main__":
regexes = [
"[a-z]+", # lower case
"[A-Z]+", # upper case
"[a-zA-Z]+", # mixed case
"\d+", # digits
"[a-z\d]+", # digits and lower case
"[A-Z\d]+", # digits and upper case
"[a-zA-Z\d]+" # digits and mixed case
]
print contains("SHOULD" , regexes)
print contains("should" , regexes)
print contains("Should" , regexes)
print contains("123" , regexes)
print contains("123as" , regexes)
print contains("123AS" , regexes)
print contains("123aS" , regexes)
上面的照片
SHOULD contains only "[A-Z]+"
should contains only "[a-z]+"
Should contains only "[a-zA-Z]+"
123 contains only "\d+"
123as contains only "[a-z\d]+"
123AS contains only "[A-Z\d]+"
123aS contains only "[a-zA-Z\d]+"
请发布一些示例字符串、预期输出、尝试。正则表达式本身就是有效字符串。请提供一些示例(输入、所需的输出,以及您可能遇到的任何例外)。
(比如str_regex)
不是一个列表,而是一个tupleexamples会很有帮助的。我编辑了您的问题,以使其更容易理解,格式也更好。但是,您需要给我们关于什么是“普通字符串”的规则。您提示可能是只包含[a-zA-Z]的字符串-这是您的规范吗?这意味着常规字符串不能包含数字、空格或下划线。在我们提供帮助之前,您需要定义普通字符串可以包含什么以及如何将其与regexp区分开来。除非您有一个非常严格的规范,否则这可能是不可能的,因为您的“普通字符串”也可能是有效的regexp…这不是我想要的。可能是我的错,问题的形式不正确。编辑了这个问题。