【问题标题】:How to split Unicode string in non-Alphanumeric characters with regular expression?如何使用正则表达式将 Unicode 字符串拆分为非字母数字字符?
【发布时间】:2022-01-25 10:15:32
【问题描述】:

我想在非_字母数字字符(例如空格、CRLF 等)上拆分包含 unicode 单词的字符串。

例如:

AStr := 'امین Bob(Alice)';

我正在寻找将AStr 拆分为以下列表的正则表达式:

امین
Bob
Alice

【问题讨论】:

  • 到目前为止您尝试了哪些方法,在哪里失败了?
  • 我在想代表非字母数字的 [\W]+ 考虑 unicode 字符,但它被检测为非字母数字的 unicode 字符。
  • 看看匹配单词边界的\b

标签: regex delphi


【解决方案1】:

看完Regex Tutorial - Unicode Characters and Properties: Unicode Categories后才知道答案是:

AnArray := TRegEx.Split(ADataStr, '[^\p{L}\p{N}]+');

【讨论】:

  • 我会添加\p{M},否则您可能会将Chloë 之类的合法名称拆分为Chloe¨combined characters
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
相关资源
最近更新 更多