【问题标题】:Regexp: how to match a char without a escape char before it?正则表达式:如何匹配前面没有转义字符的字符?
【发布时间】:2016-12-23 19:08:57
【问题描述】:

嗯,我有一个类似a:b:c:d:2\:3 的字符串。

所以,我想匹配 PCREJavascript 正则表达式的所有冒号字符(:)。

预期结果是 4 个冒号:[':', ':', ':', ':']

colon分割的示例结果:

PHP

Array('a', 'b', 'c', 'd', '2:3')

Javascript

['a', 'b', 'c', 'd', '2:3']

unescaped colon 的示例结果匹配:

PHP

Array(':', ':', ':', ':')

Javascript

[':', ':', ':', ':']

谢谢

【问题讨论】:

  • 到目前为止,您尝试过什么?例如:匹配前面不是反斜杠的字符的所有冒号
  • 获得这样的结果[':', ':', ':', ':']有什么好处?
  • @RomanPerekhrest 我认为从长远来看,他会希望在这些冒号处拆分字符串
  • 我要拆分。对不起我的英语不好。
  • 要在与单词字符相邻的冒号处拆分,请使用\b:

标签: javascript php regex


【解决方案1】:

您可以使用否定的lookbehind 来确保: 前面没有反斜杠。

(?<!\\):

演示:https://regex101.com/r/IVtDSC/1

PHP:

preg_match_all('/(?<!\\\):/', 'a:b:c:d:2\\:3', $matches);
print_r($matches);

演示:https://eval.in/703687

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多