gpt4 book ai didi

正则表达式拒绝匹配,因为 Instr

转载 作者:行者123 更新时间:2023-12-03 15:52:44 25 4
gpt4 key购买 nike

使用正则表达式执行“instring”类型函数的最简单方法是什么?例如,我怎么能因为存在单个字符(如 :)而拒绝整个字符串?例如:

  • 这个 - 好的
  • 有:是 - 因为 :
  • 不好

更实际一点,我如何匹配以下字符串:

//foo/bar/baz[1]/ns:foo2/@attr/text()

对于不包含命名空间的 xpath 上的任何节点测试?

(/)?(/)([^:/]+) 

将匹配节点测试,但包含使其出错的命名空间前缀。

最佳答案

我仍然不确定您是否只是想检测 Xpath 是否包含 namespace ,或者您是否想删除对 namespace 的引用。所以这里有一些示例代码(在 C# 中)可以同时执行这两项操作。

class Program
{
static void Main(string[] args)
{
string withNamespace = @"//foo/ns2:bar/baz[1]/ns:foo2/@attr/text()";
string withoutNamespace = @"//foo/bar/baz[1]/foo2/@attr/text()";

ShowStuff(withNamespace);
ShowStuff(withoutNamespace);
}

static void ShowStuff(string input)
{
Console.WriteLine("'{0}' does {1}contain namespaces", input, ContainsNamespace(input) ? "" : "not ");
Console.WriteLine("'{0}' without namespaces is '{1}'", input, StripNamespaces(input));
}

static bool ContainsNamespace(string input)
{
// a namspace must start with a character, but can have characters and numbers
// from that point on.
return Regex.IsMatch(input, @"/?\w[\w\d]+:\w[\w\d]+/?");
}

static string StripNamespaces(string input)
{
return Regex.Replace(input, @"(/?)\w[\w\d]+:(\w[\w\d]+)(/?)", "$1$2$3");
}
}

希望对您有所帮助!祝你好运。

关于正则表达式拒绝匹配,因为 Instr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com