正则表达式X/Y坐标

Bad*_*rou 5 php regex coordinate

我有适合这种模式的数据:(x|y).x并且y可以是负数,并且在这种情况下,符号-存在.我正在尝试构建一个正则表达式来匹配x和y.

这是我目前的表达,这对我来说似乎有效,但是不起作用:

/\((-?\d+)\|(-?\d+)\)/
Run Code Online (Sandbox Code Playgroud)

这是原始数据:

?(-112|??-522??)
?(-112|??522??)
(112|-??522??)
(112|??522??)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Luc*_*ski 4

\n\n

您的测试数据中有一些不可见的 Unicode 字符。

\n\n

删除它们,您的正则表达式将正常工作

\n\n

例如,您的示例(-112|\xe2\x80\xad\xe2\x80\xad-522\xe2\x80\xac\xe2\x80\xac)实际上是\\u0028\\u002d\\u0031\\u0031\\u0032\\u007c\\u202d\\u202d\\u002d\\u0035\\u0032\\u0032\\u202c\\u202c\\u0029.

\n\n

那里有一些U+202D从左到右覆盖)和U+202C流行方向格式)。

\n\n

如果您想在正则表达式中允许这些,您可以包含它们:

\n\n
\\(\\p{Cf}*(-?\\p{Cf}*\\d+)\\p{Cf}*\\|\\p{Cf}*(-?\\p{Cf}*\\d+)\\p{Cf}*\\)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但模式变得相当混乱。我只是在那里添加了一堆\\p{Cf}*以允许这些字符。请注意,在尝试将捕获的子字符串转换为整数之前,您仍然需要删除减号和数字之间的字符。

\n\n

\\p{Cf}+在继续使用原始模式之前,将所有匹配的内容替换为空字符串可能会更简单。

\n