C# 中的通配符搜索

发布于 2024-07-15 21:52:59 字数 335 浏览 6 评论 0原文

我在 XML 文件中有一个基于通配符的模式列表。 如果输入字符串与 XML 文档中存在的模式匹配,则将采取特定操作。

我确实找到了这里提到的方法 http://www.codeproject.com/KB/recipes /wildcardtoregex.aspx 但在这种情况下,我需要为 XML 中的每个条目创建一个 RegEx 对象,这是我试图避免的。

让我知道是否有更好的方法在 .net 中进行通配符搜索

I have a list of wild card based patter in a XML file. If the input string matches the pattern present in the XML doc, then a specific action would be taken.

I did find the approach mentioned here http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx but in that case, I need to create a RegEx object for every entry in the XML which I am trying to avoid.

Let me know is there any better way to do wild card search in .net

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

_畞蕅 2024-07-22 21:52:59

如果您希望评估文档中的每个模式以与输入字符串进行匹配,则必须为每个模式创建一个正则表达式,就像您提到的那样。 没有捷径。

我猜你担心的是性能。 你确定这是一个问题吗? 如果是这样,您应该尝试寻找完全不同的方法。

您要匹配许多输入字符串吗? 在这种情况下,您应该保留您的正则表达式(例如,在列表中)而不是每次都创建它们。 正则表达式可以重复使用。

否则,我认为你提出的方法没有大问题。

If you wish to evaluate each pattern in you document to match against the input string, you'll have to create a RegEx for each pattern, like you mention. There's no shortcut.

I guess you worry about perfomance. Are you sure it's a problem? If so, you should try to find a different approach altogether.

Are you going to match many input strings? In that case, you should keep your RegExes (in a list, say) rather than creating them each time. RegExes can be reused.

Otherwise, I can see no big problem with your proposed approach.

煞人兵器 2024-07-22 21:52:59

已经过了我的就寝时间了,所以我的回答可能听起来很奇怪。

在我看来,您的设置方式错误:您将输入字符串与模式列表进行匹配。 从逻辑上讲,您应该将列表中的每个模式与输入字符串进行匹配并确定匹配。 通过解析 XML 文件来构造 Regex 模式数组应该非常简单。 然后,您可以迭代该数组并将每个正则表达式与您的输入字符串进行匹配。

此外,为什么需要通配符? 通配符可以被视为 Regex 的子集,因此您已经拥有封装在 Regex 对象中的通配符匹配的所有功能。

也就是说,有关输入/通配符类型的更多数据可能有助于理解您的问题。

It's way past my bedtime, so I may sound quirky on this answer.

It seems to me that you have things set up the wrong way: You're matching an input string against a list of patterns. Logically, you should be matching each pattern in the list against the input string and determining a match. It should be quite straightforward to construct an array of Regex patterns by parsing the XML file. Then you can iterate through the array and match each Regex against your input string.

Additionally, Why do you need wildcards at all? Wildcards can be considered a subset of Regex and so you already have all the functionality of wildcard matching encapsulated within the Regex object.

That said, more data on the type of input/wildcards may prove helpful to understand your question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文