我有15个字符长的字符串。我正在使用正则表达式对其进行一些模式匹配。我想知道IsMatch()函数返回true的子字符串的位置。问题:有没有返回匹配索引的函数? 最佳答案 对于多个匹配项,您可以使用与此类似的代码:Regexrx=newRegex("as");foreach(Matchmatchinrx.Matches("asasasas")){inti=match.Index;} 关于c#-是否有函数返回RegEx匹配开始的索引?,我们在StackOverflow上找到一个类似的问题:
我需要知道像这样创建静态Regex对象是否安全:publicstaticRegexs_Regex_ExtractEmails=newRegex(@"\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b");然后像这样从ASP.NET线程中静态调用它:s_Regex_ExtractEmails.Matches("myemailismail@email.com")这会造成什么问题吗?我这样做基本上是为了优化,以便可以预编译和重用Regex对象。 最佳答案 是的,Regex对象是线程安全的。来自th
我目前正尝试在C#(最新的.NET和VisualStudio2008)中拆分一个字符串,以便检索方括号内的所有内容并丢弃剩余的文本。例如:“H1受体拮抗剂[HSA:3269][PATH:hsa04080(3269)]”在这种情况下,我有兴趣将“HSA:3269”和“PATH:hsa04080(3269)”放入字符串数组中。如何实现? 最佳答案 Split在这里帮不了你;你需要使用正则表达式://usingSystem.Text.RegularExpressions;//pattern=anynumberofarbitrarychar
我在网上找不到任何关于此的信息。有RegexOptions,但它没有将Global作为其选项之一。内联修饰符列表也没有提到全局匹配。简而言之,我有一个正则表达式来解析类似的东西--arga="arg1"--argb="arg2"使用此正则表达式将参数名称/值对分开:--(\\w+)\\s*=\\s*\"(\\w+)\"\\s*但是.NETRegex类不会全局(迭代)执行此操作。因此,为了使它起作用,我必须进行匹配,然后从参数字符串中删除它,并一遍又一遍地循环,直到我用尽所有参数。最好只运行一次正则表达式,然后遍历匹配组以获取名称值对。这可能吗?我错过了什么?
我得到了很多具有以下格式的字符串(实际上是SQL代码段):('ABCDEFG',123542,'XYZ99,9')我需要使用C#拆分此字符串以获得:'ABCDEFG'123542'XYZ99,9'我最初使用的是简单的Split(','),但由于最后一个参数中的逗号对输出造成严重破坏,我需要使用Regex来获取它。问题是我在正则表达式方面仍然很菜鸟,我似乎无法破解模式,主要是因为在该字符串中,数字和字母数字参数可能随时存在...我可以用什么来根据引号外的每个逗号拆分该字符串?干杯 最佳答案 您可以拆分所有逗号,它们后面有偶数个引号,使
虽然这看起来是一个微不足道的问题,但我很确定它不是:)我需要验证来自世界各地的人的名字和姓氏。想象一下我需要尽可能多地删除我识别出的任何错误的名字和姓氏的巨大列表。我怎样才能用正则表达式做到这一点?如果只有英语,我认为这会减少它:^[a-z-']+$但是,我还需要支持这些情况:可能在不同国家/地区使用的其他标点符号(不知道是哪个,但也许您知道!)不同的Unicode字母集(重音字母、希腊语、日语、中文等)没有数字或符号或不必要的标点符号或rune等。头衔、中间名首字母、后缀不是此数据的一部分姓名已被姓氏分隔。我们准备强制简化极其罕见的名字(存在一个名为“@”的人,但让该字符无处不在是没
在执行Regex.Replace时如何使用命名捕获?我已经走到这一步了,它做了我想要的,但不是我想要的:[TestCase("FirstSecond","SecondFirst")]publicvoidNumberedReplaceTest(stringinput,stringexpected){Regexregex=newRegex("(?First)(?Second)");Assert.IsTrue(regex.IsMatch(input));stringreplace=regex.Replace(input,"$2$1");Assert.AreEqual(expected,rep
在C#中,我想使用正则表达式来匹配这些词:stringkeywords="(shoes|shirt|pants)";我想在内容字符串中找到整个单词。我认为这个regex会这样做:if(Regex.Match(content,keywords+"\\s+",RegexOptions.Singleline|RegexOptions.IgnoreCase).Success){//matched}但对于像participants这样的词,它会返回true,即使我只想要整个词pants。我如何只匹配那些文字词? 最佳答案 您应该将单词定界符添
正则表达式test()在Firefox和Chrome中给我带来了问题,但它在Opera和Safari中运行完美。问题代码:varpattern=/(\s+(?!\$\w+)|(^(?!\$\w+)))/g;if(pattern.test(String(id).replace(/\s+OR|AND\s+/g,''))){searchError("Yousuck.");return1;}当你传入空白时,它每次都会阻塞它。当您传入类似'$ab'的内容时,它将每隔一段时间在Firefox/Chrome中运行。很奇怪。 最佳答案 这是RegE
我有一行代码在通过JSLint运行时出现以下错误:Lintatline604character48:Insecure'^'.numExp=parseInt(val[1].replace(/[^\-+\d]/g,""),10);这个错误似乎是指JSLint的选项页面中的以下描述:"trueif.and[^...]shouldnotbeallowedinRegExpliterals.Theseformsshouldnotbeusedwhenvalidatinginsecureapplications."我不太明白客户端javascript应用程序如何真正被认为是安全的。即使使用最严密的正则