Tag: regex

C#中的正则表达式用于文件名validation

什么是一个好的正则表达式,可以validation文本字符串,以确保它是一个有效的Windows文件名? (AKA没有\/:*?”|字符)。 我想像下面这样使用它: // Return true if string is invalid. if (Regex.IsMatch(szFileName, “”)) { // Tell user to reformat their filename. }

我可以使用正则表达式来查找X的索引吗?

我有一个大字符串,想要找到X的第一个出现,X是“numberXnumber”… 3X3,或4X9 …… 我怎么能在C#中做到这一点?

如何替换C#中的特定单词?

请考虑以下示例。 string s = “The man is old. Them is not bad.”; 如果我使用 s = s.Replace(“The”, “@@”); 然后它返回”@@ man is old. @@m is not bad.” 但我希望输出为”@@ man is old. Them is not bad.” 我怎样才能做到这一点?

用于提取脚本标签的正则表达式

我试图在C#中编写一个正则表达式来删除所有脚本标记及其中包含的任何内容。 到目前为止,我已经提出了以下内容: \[^(\</)]*?\ ,但这不起作用。 我将分解并在每个部分解释我的想法: \ 在这里,我试图声明它应该获取任何脚本元素,即使它以名称空间为前缀,例如. 我还将此添加到结束标记中。 [^(\</)]*? 在这里,我试图声明除了 , 等之外,它应该允许在标签中包含任何内容。 \ 在这里,我声明它应该有一个结束标记。 任何人都可以找到我错的地方吗?

使用lambda表达式替换正则表达式匹配

我正在寻找一个简单的正则表达式查找和替换解决方案我可以提供一个lambda表达式来替换每个匹配。 例如: regex.MatchReplace(text, match => “replacement string”); 这样我就可以创建自己的逻辑来生成替换字符串,这可能涉及调用各种方法等,即你不能用替换模式做的事情。 谁知道我怎么能做到这一点?

匹配失败的匹配字符串中的正则表达式索引

我想知道是否有可能在给定字符串中提取索引位置时Regex在尝试匹配时失败了? 例如,如果我的正则表达式是“abc”并且我试图将其与“abd”匹配,则匹配将在索引2处失败。 编辑以澄清。 我需要这个的原因是允许我简化我的应用程序的解析组件。 该应用程序是一个Assmebly语言教学工具,允许学生编写,编译和执行程序集程序。 目前我有一个tokenizer类,它使用正则表达式将输入字符串转换为令牌。 这非常有效。 例如: 给定以下输入=“INP:x:”时,标记生成器将生成以下标记 : Token.OPCODE, Token.WHITESPACE, Token.LABEL, Token.EOL 然后分析这些标记以确保它们符合给定语句的语法。 目前,这是使用IF语句完成的,并且certificate是麻烦的。 这种方法的好处是我可以提供详细的错误消息。 IE if(token[2] != Token.LABEL) { throw new SyntaxError(“Expected label”);} 我想使用正则表达式来定义语法而不是烦人的IF语句。 但在这样做时,我失去了返回详细错误报告的能力。 因此,我至少想告知用户发生错误的WHERE。

用于解析JSON对象数组的正则表达式?

我正在尝试将一组JSON对象解析为C#中的字符串数组。 我可以从JSON对象中提取数组,但我无法将数组字符串拆分为单个对象的数组。 我所拥有的是这个测试字符串: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; 现在我正在使用以下正则表达式将项目拆分为单个对象。 现在,他们是2个独立的正则表达式,直到我用第二个修复问题: Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); Regex arrayParser = new Regex(@”((?\{[^\}]\}),?)+” , RegexOptions.ExplicitCapture); arrayFinder正则表达式按照我期望的方式工作,但由于我不明白的原因, arrayParser正则表达式根本不起作用。 我想要它做的就是将各个项目拆分成自己的字符串,这样我得到一个这样的列表: {id:0,name:”Lorem Ipsum”} {id:1,name:”Lorem Ipsum”} {id:2,name:”Lorem Ipsum”} 此列表是string[]数组还是Group或Match集合无关紧要,但我对如何拆分对象感到困惑。 使用上面声明的arrayParser和json字符串,我尝试过这个代码,我认为这个代码没有运气: string json = “{items:[{id:0,name:\”Lorem Ipsum\”},{id:1,name” + “:\”Lorem Ipsum\”},{id:2,name:\”Lorem Ipsum\”}]}”; Regex arrayFinder = new Regex(@”\{items:\[(?[^\]]*)\]\}” , RegexOptions.ExplicitCapture); […]

在某些字符计数后拆分字符串

我需要一些帮助。 我正在使用包含exception详细信息的文本文件编写错误日志。 有了这个我希望我的堆栈跟踪细节写成如下所示,而不是直线,以避免用户滚动记事本的滚动条或让我们说在第100个字符,字符串将写入下一行。 我不知道如何实现这一目标。 提前致谢。 样品(这是我目前的直线输出) STACKTRACE: at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk * *我想要的输出(字符串将在特定字符数后写入下一行) STACKTRACE: at stacktraceabcdefghijklmno pqrstuvwxyztacktraceabcdefgh ijklmnopqrswxyztacktraceabcd efghijk 我的代码 builder.Append(String.Format(“STACKTRACE:”)); builder.AppendLine(); builder.Append(logDetails.StackTrace);

Selenium C#Webdriver FindElements(By.LinkText)RegEx?

是否可以通过使用类似A-ZNN:NN:NN:NN的模式搜索其文本来查找网页上的链接,其中N是单个数字(0-9)。 我在PHP中使用了Regex将文本转换为链接,所以我想知道是否可以在Selenium中使用这种filter和C#来查找按照某种格式看起来相同的链接。 我试过了: driver.FindElements(By.LinkText(“[AZ][0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2}”)).ToList(); 但这没效果。 任何建议?

C#替换为回调函数,如AS3中所示

在AS3中,您在具有此签名的字符串上有一个函数: function replace(pattern:*, repl:Object):String repl:Object也可以指定一个函数。 如果指定了函数,则会插入函数返回的字符串以代替匹配的内容。 另外,是否可以获取我想要替换的原始字符串? (在AS3中,您可以获取原始字符串 var input:String = arguments[2]; //in the callback function ) 我没有在Match类中看到包含原始字符串的属性…