从字符范围生成正则表达式

时间:2014-09-11 12:57:54

标签: regex vba

我有一个名单列表,我使用正则表达式来过滤该列表。 让我们说我的清单看起来像这样:

  • 爱丽丝
  • 安娜
  • 鲍勃
  • 约翰
  • 彼得

现在我只想要A-D范围内的名字,所以我使用正则表达式^[A-D].*并获取 Alice,Anna,Bob

这很容易,但是当我选择更具体的范围时,正则表达式变得更加复杂,例如A-Jen - > ^([A-I].*|J([a-d]|[a-e][a-n]).*)

现在我得到 Alice,Anna,Bob,Jane

它变得更加困难,例如。

Abc-Def - > ^((A([b-z][c-z].*|[c-z].*))|[B-C].*|D([a-d]|[a-e][a-f]).*)

所以基本上我正在寻找一种根据字符范围生成这些正则表达式的方法。我试图制作一个VBA脚本来完成这项工作,但不幸的是我无法做到这一点。这就是我要求你们寻求帮助的原因:)。

有没有人知道如何生成这些表达式? 非常感谢任何帮助。

PS:英语不是我的母语,但我希望你理解我的问题:)

1 个答案:

答案 0 :(得分:2)

另类,更简单的方法:

Excel公式

=AND($A5>=$B$1,$A5<=$B$2)

或等效的VBA用户定义函数

Function IsAlphabeticallyBetween(ByVal strName As String, _
    ByVal lo As String, ByVal hi As String) As Boolean

    IsAlphabeticallyBetween = strName >= lo And strName <= hi

End Function

enter image description here