regex 如何在VBA中匹配下标和正则表达式

jm81lzqq  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(145)

在其他字符串中,我尝试匹配字符串LC₅₀
在VBA中,我可以输入上标字符,但不能输入下标字符。

Dim r1 As Object
Set r1 = New RegExp
r1.Pattern = "^(\(?[a-z].*[a-z]\)?\.?,?-?:?|\(?\d{1,5}|%,?|[a-z]|LC50|\D.*³|[A-Z]\d{1},?|\(?\d{1,4}\..*\)?|°.*|[A-Z]\d(-|:).*|MPa|\(o-,|m-,|p-\))$": r1.Global = True: Set r1Matches = r1.Execute(Replace(arry(i), "- ", "-"))

我的问题是:如何在VBA中将以下独立字符串与正则表达式匹配
LC₅₀

tvz2xvvm

tvz2xvvm1#

您可以将LC50替换为LC[5\u2085][0\u2080]
通过其他一些小的增强,该模式可以看起来像

^(\(?[a-z].*[a-z]\)?\.?,?-?:?|\(?\d{1,5}|%,?|[a-z]|LC[5\u2085][0\u2080]|\D.*³|[A-Z]\d,?|\(?\d{1,4}\..*\)?|°.*|[A-Z]\d[-:].*|MPa|\([om]-,|p-\))$

这里,

  • \(o-,|\(m-,已替换为\([om]-,
  • [A-Z]\d(-|:).*替换为[A-Z]\d[-:].*
  • 删除了{1},因为它始终是冗余的。

下标数字代码为
| 人数|代码|
| - ------|- ------|
| \u2080|₀|
| \u2081|₁|
| \u2082|二|
| \u2083|₃|
| x1米11米1x|₄|
| \u2085|₅|
| \u2086|₆|
| \u2087|₇|
| \u2088|₈|
| \u2089|₉|

相关问题