diff --git a/basis/regexp/classes/classes.factor b/basis/regexp/classes/classes.factor index a2d91b97fb..240b27a9cc 100644 --- a/basis/regexp/classes/classes.factor +++ b/basis/regexp/classes/classes.factor @@ -30,6 +30,10 @@ M: ascii-class class-member? ( obj class -- ? ) M: digit-class class-member? ( obj class -- ? ) drop digit? ; +M: c-identifier-class class-member? ( obj class -- ? ) + drop + { [ digit? ] [ Letter? ] [ CHAR: _ = ] } 1|| ; + M: alpha-class class-member? ( obj class -- ? ) drop alpha? ; diff --git a/basis/regexp/regexp-tests.factor b/basis/regexp/regexp-tests.factor index 2a6c0dc16f..3e7d83a12b 100644 --- a/basis/regexp/regexp-tests.factor +++ b/basis/regexp/regexp-tests.factor @@ -46,6 +46,14 @@ IN: regexp-tests [ t ] [ "a" ".+" matches? ] unit-test [ t ] [ "ab" ".+" matches? ] unit-test +[ t ] [ " " "[\\s]" matches? ] unit-test +[ f ] [ "a" "[\\s]" matches? ] unit-test +[ f ] [ " " "[\\S]" matches? ] unit-test +[ t ] [ "a" "[\\S]" matches? ] unit-test +[ f ] [ " " "[\\w]" matches? ] unit-test +[ t ] [ "a" "[\\w]" matches? ] unit-test +[ t ] [ " " "[\\W]" matches? ] unit-test +[ f ] [ "a" "[\\W]" matches? ] unit-test [ t ] [ "" "a|b*|c+|d?" matches? ] unit-test [ t ] [ "a" "a|b*|c+|d?" matches? ] unit-test