我有一个字符串,例如“option1;option2;option3”,其中“;” 分隔符可能是任何东西。用户输入的任何至少 1 个字符的字符串。
我正在寻找一种简单/干净的方法来确定分隔符,而无需输入字符串以外的任何信息。
我可以保证分隔符仅存在于 2 个元素之间,但考虑输入字符串中只有一个选项的可能性。我还可以保证分隔符只能是非字母数字,并且可能包含空格和 $ 或 # 或 % 等。
无法为此创建正则表达式,但也许有人可以,尽管我并不是特别在寻找正则表达式。
找到分隔符
in = "option1;option2;option3"
separator=re.search("[ ;'#/.,<>?~@;,:}{\]\[+=\-_]+", in).group()
抱歉,为此使用正则表达式更容易
现在它还给你了。您需要证明这对所有可能的输入都有效
这是一个可能更容易使用的版本
possible=""" ;'#/.,<>?~@,:}{][+=-_"""
seperator=re.search("[%s]+" % re.escape(possible), input).group()
这意味着正则表达式中具有特殊含义的字符可以更容易地添加或删除
仅当您确定只有字符 [A-Za-z0-9_] 会出现在字段中时,这才有效:
^(\w+)\W(\w+)\W(\w+)$
这可能不是这种情况,所以我的解决方案是:
^([^X]+)X([^X]+)X([^X]+)$
whereX
是分隔符。这个解决方案的缺点是,在最坏的情况下,您会为每一行文本和每个分隔符运行正则表达式。可能的优化是: