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