c# - 如何检查字符串是 "string"还是 RegEx?

标签 c# .net regex

如何检查文本框中的字符串是纯字符串还是正则表达式?

我正在逐行搜索文本文件。

通过 .Contains(Textbox.Text); 或通过 Regex(Textbox.Text) Match(currentLine)

(我知道,语法不是这样的,它只是为了演示)

现在我的程序应该自动检测 Textbox.Text 是 RegEx 形式还是普通字符串。

有什么建议吗?编写我自己的小 RexEx 来检测文本框是否包含 RegEx?

编辑:

I failed to add thad my Strings can be very simple like Foo ore 0005 I'm trying the suggested solutions right away!

最佳答案

您无法使用正则表达式检测正则表达式,因为正则表达式本身不是一种正则语言

但是,您可能做的最简单的事情就是尝试从您的文本框内容编译一个正则表达式,当它成功时您就知道它是一个正则表达式。如果它失败了,你知道它不是。

但这会将像“foo”这样的普通字符串也归类为正则表达式。根据您需要执行的操作,这可能是问题,也可能不是问题。如果它是一个搜索字符串,那么这种情况下的结果是相同的。在“foo.bar”的情况下,它们会有所不同,尽管因为它是一个有效的正则表达式,但匹配的内容与字符串本身不同。

我的建议(也在另一条评论中说明)是您只需始终启用正则表达式搜索,因为如果您在此处拆分代码路径,则完全没有区别。除了可疑的性能优势(如果有很大的好处,这不太可能产生任何影响)。

关于c# - 如何检查字符串是 "string"还是 RegEx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525128/

相关文章:

c# - 如何使用 LINQ 从集合的开头查找子集?

c# - LINQ 列表 : Specified cast is not valid

python - 如何在同一行中分隔多个正则表达式匹配项

javascript - .replace 在 Javascript 中不起作用\n

c# - GetChanges() 或 RowState 获取数据表的所有更改?

c# - 更新 Sharepoint 列表项

c# - 获取此格式的日期时间 : 2018-10-26T16:44:38+01:00

c# - 具有偏移量的 GroupBy DateTime 列 C# Linq

python - 使用重复嵌套模式从文本文件中提取文本

c# - 如何从 asp.net core 中的 Roles 对象获取角色名称