我需要在字符串Mod*
上使用(正则表达式),后跟一个特定的字符,例如"A",如下所示:Mod A
、Mod_A
、Module xx A
、Modules (A & B)
等等。
但是,有以下条件:
- (1)-如果单元格包含(
Modif*
或Moder*
或Modr*
)和Mod*
中的任何一个加上我的特定字符,则结果为True* - (2)-如果单元格包含(
Modif*
或Moder*
或Modr*
)中的任何一个而不是Mod*
加上我的特定字符,则结果为False*
请将此示例和预期结果:
| * * 项目说明**|* * RegexMatch的预期结果**|
| - ------|- ------|
| 模块A1的新修改|正确|
| 模A的一种新的改进|正确|
| mod_A新温和派|正确|
| 至模块(A和B)|正确|
| 新改良和中度A1|错误|
| A的新变体|错误|
| 修改的新中度|错误|
| 至模块(D & E)|错误|
Public Function RegexMatch(str) As Boolean
Dim tbx2 As String: tbx2 = "A" 'ActiveSheet.TextBox2.Value
Static re As New RegExp
re.Pattern = "\b[M]od(?!erate).*\b[" & tbx2 & "]\b"
re.IgnoreCase = True
RegexMatch = re.Test(str)
End Function
在此先感谢您的帮助。
1条答案
按热度按时间6tqwzwtp1#
不确定我是否正确理解了您的要求:您需要包含以“mod”开头的单词的行,但以“Modif”、“Moder”或“Modr”开头的单词不算在内。此外,需要存在模块 * 字符 *(例如“A”)。
当我看到更长的正则表达式术语时,我通常会感到头晕,所以我尝试编写一些代码行来代替。下面的函数用空格替换了“(“或“_”等特殊字符,将字符串拆分成单词,并逐字检查内容。易于理解,易于适应:
使用您的数据作为UDF进行测试: