Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

dart - Matching Unicode letters with RegExp

I am in need of matching Unicode letters, similarly to PCRE's p{L}.

Now, since Dart's RegExp class is based on ECMAScript's, it doesn't have the concept of p{L}, sadly.

I'm looking into perhaps constructing a big character class that matches all Unicode letters, but I'm not sure where to start.

So, I want to match letters like:

foobar
???? ????

But the R symbol shouldn't be matched:

BlackBerry?

Neither should any ASCII control characters or punctuation marks, etc. Essentially every letter in every language Unicode supports, whether it's ?, ?, φ or ?, they should match if they are actual letters.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I know this is an old question. But RegExp now supports unicode categories (since Dart 2.4) so you can do something like this:

RegExp alpha = RegExp(r'p{Letter}', unicode: true);
print(alpha.hasMatch("f")); // true
print(alpha.hasMatch("?")); // true
print(alpha.hasMatch("?")); // false

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...