您的任务是编写两个正则表达式,每个正则表达式都与另一个正则表达式匹配,但自身不匹配。
两个正则表达式都应具有以下形式:
/pattern/optional-flags
这也是它们应该匹配的形式。
最短的解决方案获胜。解决方案长度计算为两个正则表达式(包括斜杠和标志)中字符的总和。
可以使用您选择的regex语法标准,或者指定编程语言(如果有区别)。
玩得开心!
/a/
匹配abc
吗?
/^%/
和%^/%
)
您的任务是编写两个正则表达式,每个正则表达式都与另一个正则表达式匹配,但自身不匹配。
两个正则表达式都应具有以下形式:
/pattern/optional-flags
这也是它们应该匹配的形式。
最短的解决方案获胜。解决方案长度计算为两个正则表达式(包括斜杠和标志)中字符的总和。
可以使用您选择的regex语法标准,或者指定编程语言(如果有区别)。
玩得开心!
/a/
匹配abc
吗?
/^%/
和%^/%
)
Answers:
/A$/
/.A/A
尽管这是Doorknob /modifier$/
答案的一种变体,但我认为这项创新将其限定为单独的答案,而不是对他的评论:修饰符具有双重职责。它锚定了,而不是仅仅在那里供其他正则表达式匹配。
第一个正则表达式匹配以文字结尾的任何字符串A
。第二个正则表达式A
使用anchor-to-start标志匹配第二个字符为文字的任何字符串。
//
匹配任何东西,这意味着每个正则表达式最多可以具有三个非定界符。使用PHP PCRE,在该约束中有73339个非自匹配正则表达式,并且对长度小于10(对为32Mpairs而不是5.7Gpairs的对,因为它们中的大多数都是5个字符,包括定界符)的长度进行详尽的检查此解决方案,没有其他选择。因此,我声称它对于该特定的正则表达式引擎而言是最佳的。
第一个正则表达式:
/^[^a]+$/
第二个正则表达式:
/^[^b]+$/
JavaScript测试:
var regex1 = "/^[^a]+$/";
var regex2 = "/^[^b]+$/";
alert(/^[^a]+$/.test(regex2)); // true: regex1 matches regex2
alert(/^[^b]+$/.test(regex1)); // true: regex2 matches regex1
alert(/^[^a]+$/.test(regex1)); // false: regex1 doesn't match regex1
alert(/^[^b]+$/.test(regex2)); // false: regex2 doesn't match regex2
第一个正则表达式:
/\d/
第二个正则表达式:
/^[^0]+$/
说明:第一个正则表达式匹配包含数字的所有内容,第二个正则表达式匹配不包含的所有内容0
。
JavaScript测试:
var regex1 = "/\d/";
var regex2 = "/^[^0]+$/";
alert(/\d/.test(regex2)); // true: regex1 matches regex2
alert(/^[^0]+$/.test(regex1)); // true: regex2 matches regex1
alert(/\d/.test(regex1)); // false: regex1 doesn't match regex1
alert(/^[^0]+$/.test(regex2)); // false: regex2 doesn't math regex2
花了我半个小时的时间来弄清楚,但我真的很高兴自己做到了:)
/j.$/
/^.j/
第一个与j
从右开始的第二个位置中发生的匹配。第二个匹配项j
从左开始在第二个位置发生。
我还没有测试过,但是我认为这些RegEx确实是多功能的,因为j
可以用任何\w
字符(或更多字符)代替,并且仍然可以正常工作。
PS(希望)可以使用任何语言。但是,如果不能使用,请在下面的评论中告知:)
/\s/
/ s.$/x
第一个匹配任何带有空格字符的字符串,但不包含空格。第二个包含空格,但是由于x
修饰符而被忽略;它匹配倒数第二个字符为的任何字符串s
。
/\w+w/
/\Ww/
第一个匹配任何带有“单词”字符(字母,数字,下划线)的字符串,后跟一个文字w
;第二个匹配任何带有非单词字符的字符串,后跟一个literal w
。
/\w\w/
/\bw/
第一个匹配任何带有两个连续的“单词”字符的字符串;第二个任意字符串,带有非单词字符或字符串开头,后跟文字w
。
/^\1?d/
/\d/
/^\\\\1?d/
/\d/
第一个匹配\ d [..]或\ 1d [..]。
第二个匹配带数字的任何字符串。
编辑:
最初,此答案被发布为与所有引擎兼容,但事实证明这是错误的。
引用捕获组时出现问题(例如,在php中)。
\1
解释为反向引用?
"/^\1?d/"
会遇到麻烦,但是如果放进去就可以了'/^\1?d/'
。解释代码时,引号有很大的不同。