【问题标题】:Match where does not begin with匹配不以开头的地方
【发布时间】:2014-11-03 06:41:48
【问题描述】:

我目前有以下正则表达式

(?!\(\) => )test\(.*,.*\)

但我只希望它匹配

test("Test 1", () { expect(1, equals(1)); });

不是

test(test, () { expect(test, "Test3"); }) )

来自以下文字

import 'package:unittest/unittest.dart';

main() {

  testExecuter("fileName", test, () => $0 );
  test("Test 1", () { expect(1, equals(1)); });

  var tests = ["Test2", "Test3"];

  for (var test in tests) {
    testExecuter("fileName", test, () => test(test, () { expect(test, "Test3"); }) );
  }
}

由于某种原因,我正在使用 regexpal.com 对其进行测试,正则表达式中不以 () => 开头的部分不起作用

【问题讨论】:

  • 你确定这是 C# 吗? import 不是我通常与 C# 相关联的东西,格式看起来更像 Java...
  • @Tim:这是他使用正则表达式的文本,而不是运行正则表达式的程序...
  • @TimPietzcker - 啊......应该仔细阅读这个问题。谢谢。
  • 你能举个例子说明你不希望它匹配什么吗?
  • @ap OP 在问题中这么说。

标签: c# regex


【解决方案1】:

当您应该使用 lookbehind 断言时,您正在使用 lookahead 断言:

(?<!\(\) => )test\(.*,.*\)

毕竟,"test(test, ()..." 实际上并不是 "() =&gt; " 开头的——它在它之前,因此你需要查看当前位置的“后面” .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多