Excel VBA正则expression式 – 如何匹配3个字符之间可能有其他字符
我正在处理一些具有一些奇怪符号的数据(来自其他语言)
即时通讯在使用正则expression式的Excel中写一个macros,我想匹配“1×2”时,该string包含1“x 2
你可以使用1.x.2
。 如果不能保证它们之间会有字符, 1.?x.?2
. 1.?x.?2
应该可以工作。
您可以在正则expression式中使用\ u ####以通过Unicode编号匹配一个字符,其中####是hex中的Unicode编号。 hex的Unicode是00E2,hex的Unicode是20AC,所以这个正则expression式
1\u00E2\u20ACx\u00E2\u20AC2
将匹配1“x 2” 。
那是你在找什么? 当string包含 1“x2”时,我不确定“ match 1×2”是什么意思。 你是说你想匹配序列1?2本身(这是正则expression式将做什么),或匹配1×2的string包含1?2在别的地方(这是你的措辞似乎暗示,但我有这样的感觉,而不是你的意思),或者你想用1×2replace1 ? 2 ?
编辑:其实,根据问题的标题,你说“ 可能有其他字符之间”,你会想要这个正则expression式,这使得“其他字符”可选:
1(\u00E2\u20AC)?x(\u00E2\u20AC)?2
这将匹配以下任何一项:
- 图1A€XA€2
- 1×2
- 1A€X2
- 1XA€2
像这样的东西将返回所需的string组件。
我假设,而不是1或2你真的想要任何数字匹配。 如果不将"(\d).*?(x).*?(\d)"
更改为"(1).*?(x).*?(2)"
Dim objRegex As Object Dim strIn As String strIn = "1â€xâ€2" Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "(\d).*?(x).*?(\d)" If .test(strIn) Then MsgBox .Replace(strIn, "$1$2$3") End With
- Excel公式 – 多列中的多个条件
- 在Excel中使用正则expression式可以在replace匹配的string之前对匹配的模式执行一些算术运算?
- Excel VBA正则expression式使用*(星号)+终点匹配整个string
- 如何在expression式SSRS之前创build文本?
- .Net正则expression式来parsingExcel页眉/页脚string
- vba countifexpression
- 将x // y转换为x / y“Excel
- 用于date编码文档的VBA正则expression式模式
- 一个正则expression式replace可以运行在一个范围,而不是循环在Excel中的单元格?