Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1910|回复: 13

正则表达式如何匹配这个字符串?

[复制链接]
发表于 2021-11-14 02:48 | 显示全部楼层 |阅读模式
我需要通过 Like语句判断是否包含 “公斤+FL” 这个固定的字符串(其位于更长字符串的中间),但是有中文有英文还有运算符,用正则我怎么写都不对,求指点到底该怎么写?

If Range("A" & i) Like "*公斤\+[FL]{2}*" Then   
这样写吗?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2021-11-14 08:42 | 显示全部楼层
本帖最后由 rnism 于 2021-11-14 08:47 编辑

可是测试不对呀。。。有大神帮帮忙么?这个“+”,用 “\+”来表示也找不到,那应该怎么写呢?
回复

使用道具 举报

发表于 2021-11-14 09:18 | 显示全部楼层
试 试 这 样  ,(忽 略 大 小写  的 话)
If Range("A" & i) Like "*公斤+[fF][Ll]*" Then   
回复

使用道具 举报

 楼主| 发表于 2021-11-14 09:59 | 显示全部楼层
q19252721 发表于 2021-11-14 09:18
试 试 这 样  ,(忽 略 大 小写  的 话)
If Range("A" & i) Like "*公斤+[fF][Ll]*" Then

谢谢您的回复!

“+”直接写在里面,会变成对“斤”的一个判断:需要“斤”出现1次或多次

[fF][Ll] 这种写法我试试,不过如果我要判断是否包含“congratulation”,那就得写很长啦...


期待您的改善!
回复

使用道具 举报

发表于 2021-11-14 10:07 | 显示全部楼层
rnism 发表于 2021-11-14 09:59
谢谢您的回复!

“+”直接写在里面,会变成对“斤”的一个判断:需要“斤”出现1次或多次

Like和正  则  是2个不同  的 方式,,,,
  需要确实需要  正  则  的 话 ,,建议先 声明  正  则  定义  正  则 规  则  上  个 模 拟  附 件  ,一起讨论 下?
回复

使用道具 举报

发表于 2021-11-14 12:49 | 显示全部楼层
既然 “公斤+FL” 这个是固定的字符串,不论它在字符串哪个位置,用like甚至instr都能简单判断出来,不需要正则。
回复

使用道具 举报

 楼主| 发表于 2021-11-25 09:03 | 显示全部楼层
大灰狼1976 发表于 2021-11-14 12:49
既然 “公斤+FL” 这个是固定的字符串,不论它在字符串哪个位置,用like甚至instr都能简单判断出来,不需要 ...

可是 If Range("A" & i) Like "*公斤+FL*" Then  这样找不到  公斤+FL  这个字符串,正确的应该怎么写呢?
回复

使用道具 举报

发表于 2021-11-25 09:05 | 显示全部楼层
if instr(range("A" & i),"公斤+FL")>0 then
回复

使用道具 举报

发表于 2021-11-25 09:51 | 显示全部楼层
本帖最后由 大灰狼1976 于 2021-11-25 10:10 编辑
rnism 发表于 2021-11-25 09:03
可是 If Range("A" & i) Like "*公斤+FL*" Then  这样找不到  公斤+FL  这个字符串,正确的应该怎么写呢 ...


可是我这边正常,like里面+号没有特殊意义,肯定没问题,要不你发个附件来看看。
回复

使用道具 举报

发表于 2021-11-25 10:05 | 显示全部楼层
原话:我需要通过 Like语句判断是否包含 “公斤+FL” 这个固定的字符串(其位于更长字符串的中间),但是有中文有英文还有运算符,用正则我怎么写都不对,求指点到底该怎么写?


解决方法:
假设原字符串是Sr
Like 运算符法
   代码:
sub like运算()
dim sr
sr="原字符串"
if sr like "?*公斤*FL*?" then  
msgbox "有"
else
msgbox "没有"
end if
END SUB
   ?代表一个字符所以两端都有字符,*代表0~任意多字符

正则法:
DIM RG AS OBJECT
Set Rg = CreateObject("vbsript.REGEXP")
' Dim Rg As Object
rg.Global = True
    rg.Pattern = "(?=公斤.*FL)"   ' ?=预测查找包含公斤,这个点.:任意一个字符  ;* 代表N多个任意字符;FL;()代表一个整体
    Debug.Print rg.Test(sr)


如果rg.Test(SR)为True说明包含,False说明不包含

以上,望解决,祝顺心

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 02:47 , Processed in 0.407633 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表