不匹配Excel VBA中Unicode字符的正则表达式

时间:2017-07-21 02:36:50

标签: regex vba excel-vba unicode excel

如何在Excel VBA中使用正则表达式来匹配单代码字符的方案。

要求

xxx業務データxxx         - Match (if contains 業務データ character)
xxx定義。業務データxxx - Not match (if contains 定義。eventhough 業務データ character exists)

我尝试使用以下正则表达式但未获得正确的结果。请指导我或在我错误的地方纠正我。

 - Regex pattern: ^(?!定義。)業務データ
   - 定義。業務データxxx    - Not match (As expected)
   - 業務データxxx          - Match (As expected)
   - xxx業務データxxx       - Not match (Failed)
   - xxx定義。業務データxxx - Not match (As expected)

 - Regex pattern: (?!定義。)業務データ
   - 定義。業務データxxx    - Match (Failed)
   - 業務データxxx         - Match (As expected)
   - xxx業務データxxx      - Match (As expected)
   - xxx定義。業務データxxx - Match (Failed)

在此尝试http://regexr.com/3gd4g

2 个答案:

答案 0 :(得分:1)

尝试以下正则表达式

^((?!.*定義。.*))(.*業務データ.*)*$

<强>结果

- Regex pattern: ^((?!.*定義。.*))(.*業務データ.*)*$
   - 定義。業務データxxx     - Not match (As expected)
   - 業務データxxx          - Match (As expected)
   - xxx業務データxxx       - Match (As expected)
   - xxx定義。業務データxxx -  Not match (As expected)
   - xxx定義業務データxxx   -  Match (As expected)

以下是链接:http://regexr.com/3gd4s

答案 1 :(得分:1)

您可以使用以下正则表达式:

^(?!.*定義。).*業務データ.*$

请参阅regex demo

模式的工作原理如下:

  • ^ - 字符串的开头
  • (?!.*定義。) - 一个负向前瞻,试图尽可能多地匹配换行符(.*)以外的任何0+字符,然后定義。字符序列,如果找到,整个字符串失败
  • .* - 除了换行符之外的任何0 +字符(.*)尽可能多
  • 業務データ - 文字子字符串
  • .* - 除了换行符之外的任何0 +字符(.*)尽可能多
  • $ - 字符串结尾