我有一个这样的示例字符串:aibicidieif
(更复杂的字符串,但格式相似)我尝试了像(?<=i).*?(?=i)
这样的正则表达式,但它没有捕获第一个和最后一个元素{{1 }和a
。
我希望f
分隔符之间的所有内容,但正则表达式只搜索在其之前和之后i
的字符。有没有办法让i
和(?=i)
可选?
答案 0 :(得分:4)
您使用的是哪种语言?在大多数语言中,您可以使用正则表达式拆分字符串,例如在Python中:
>>> re.split(r'i', 'aibicidieifi')
['a', 'b', 'c', 'd', 'e', 'f', '']
这里r'i'
可以替换为表示更复杂的正则表达式的字符串。
或者你也可以这样做:
(?<=i|^).*?(?=i|$)
通过向前瞻和后方添加交替的锚点,您现在仍然会匹配字符串开头和结尾的字符,但是某些语言不支持可变长度的外观,因此这可能无效。
如果您的语言不支持可变长度的外观,那么这是一个应该仍然有效的替代方案:
(?:(?<=i)|^).*?(?=i|$)
答案 1 :(得分:0)
不会简单地[^i]+
完成这项工作吗?
答案 2 :(得分:0)
假设输入字符串和分隔符与您正在制作它们一样简单,只需这样做,
$valuesArray = explode('i', $input);
然后从创建的数组中访问值。