正则表达式在一行上检测ASCII艺术。

时间:2014-01-15 22:45:38

标签: regex regex-lookarounds

基本上我想在一行上找到ASCII Art。对我来说,这是任何2个字符,不是字母数字忽略空格。所以一行可能看起来像:

这是一个!#测试 - > ASCII艺术检测@#@< -

所以我应该得到的比赛是:

!#

-->

@#@

<--

我想出了这仍然选择空格:(

\b\W{2,}

我使用以下网站进行测试: http://gskinner.com/RegExr/

感谢您的帮助,非常感谢!!

2 个答案:

答案 0 :(得分:3)

我建议这样的事情:

[^\w\s]{2,}

这将匹配单词字符(包括字母数字字符和下划线)或空格字符的两个或多个字符的任何序列。

Demonstration

如果您还想将下划线作为“ASCII艺术”的一部分进行匹配,那么您必须更加具体:

[^a-zA-Z0-9\s]{2,}

Demonstration

答案 1 :(得分:0)

我想这个

((?=[\x21-\x7e])[\W_]){2,}

可能与此相等

[[:punct:]]{2,}

使用POSIX,支持的标点符号为:
(要添加更多内容,只需将其添加到课程[[:punct:]<add here>]{2,}

即可

33 =!
 34 =“  35 =#
 36 = $
 37 =%
 38 =&amp;
 39 ='
 40 =(
 41 =)
 42 = *
 43 = +
 44 =,
 45 = -
 46 =。
 47 = /
 58 =:
 59 =;
 60 =&lt;
 61 = =
 62 =&gt;
 63 =?
 64 = @
 91 = [
 92 = \
 93 =]
 94 = ^
 95 = _
 96 =`  123 = {
 124 = |
 125 =}
 126 =〜