Các documentation đề cập đến ba nhà khai thác cụ thể regex:Làm thế nào để phủ nhận toán tử đối sánh Groovy?
~
trả lại mộtPattern
=~
trả lại đơn mộtMatcher
==~
trả lại mộtboolean
Bây giờ, làm thế nào tôi có thể phủ nhận người cuối cùng? (Tôi đồng ý rằng những người khác không thể có bất kỳ ý nghĩa phủ định.)
Tôi cố gắng suy nghĩ rõ ràng:
println 'ab' ==~ /^a.*/ // true: yay, matches, let's change the input
println 'bb' ==~ /^a.*/ // false: of course it doesn't match, let's negate the operator
println 'bb' !=~ /^a.*/ // true: yay, doesn't match, let change the input again
println 'ab' !=~ /^a.*/ // true: ... ???
Tôi đoán cuối cùng hai nên được hiểu như thay này:
println 'abc' != ~/^b.*/
nơi tôi có thể thấy new String("abc") != new Pattern("^b.*")
là true
.
về nhà điều hành thực hiện điều này và '! (...)' không có tùy chọn? – cfrick
Tôi không biết liệu có toán tử "không khớp" hay không, nhưng bạn luôn có thể phủ nhận kết quả như sau: 'println! ('Abc' == ~/^ a. * /)' –
Sẽ rất tuyệt nếu có một cách ngắn gọn, nhưng nếu không, đó là một câu trả lời rõ ràng: (Tôi chỉ mong đợi nhiều hơn tôi đoán, như Perl đã '! ~'. – TWiStErRob