对于某些数据处理,我需要将一个字符串拆分为多个项目。 的输入字符串的例子是:匹配特定字符,如果它在两位数之间用正则表达式
'one, two & three and four-five 123-456'
现在,我需要这个串分离成的物品,在可能情况下定界符是,
,&
,(空间),
and
,-
。但是,这是我卡住的地方,它不应该分裂在-
之间,当它在两个数字之间。
我使用PHP和preg_split
做实际的分裂,但我需要一个正则表达式匹配的分隔符除所述定界符-
当它是两个数字之间(数字,但也可能是123-456
)。在PHP中使用trim()
完成每个项目周围的空格。
我使用下面的正则表达式:
/(and|,|\s|&)|\D(-)\D/
输出(使用preg_split
后,等)是:
[0] => one
[1] => two
[2] => three
[3] => fou
[4] => ive
[5] => 123-456
的工作是正确的,但它也需要最后和第一周围文字的字母为-
分隔符。该项目123-456
是正确的,因为它不应与-
匹配(并与preg_split
分开),当它立即被数字包围时。
预期成果是:
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
[5] => 123-456
任何帮助表示赞赏,如果任何信息缺乏让我知道,我会更新我的问题。
谢谢。这解决了我的问题。我会在几分钟内接受你的答案。出于兴趣,第一部分的符号有什么不同?它和我的完全一样,但是它还有别的用途吗? –
我加了一个简单的解释。 –
最后的交替侧应该是'(?<!\ d) - (?!\ d)',否则它不匹配前导和尾部'-' – revo