如何为这些正则表达式添加不区分大小写?

时间:2015-04-22 10:28:54

标签: c# regex

我需要有关如何为这些正则表达式字符串添加不区分大小写(?i)的建议,因此我不必使用大小写字母进行双行。

 <RegEx find="(sumlja)(m|š|mo|te|ju|li)*" replaceWith="sumnja$2"/>

到目前为止,我有大约100条线路,而且确实会更多, 我真的可以在这件事上帮助你。我用C#工作, 而且我不是编码员。只是想为我需要做的事情学习这个。

1 个答案:

答案 0 :(得分:0)

使用这样的正则表达式:

 find="(?i)(sumlja)(m|š|mo|te|ju|li)*". 

不区分大小写的选项将应用于整个模式。

要将其应用于第一个捕获组,请使用(?i:PATTERN)

 find="(?i:(sumlja))(m|š|mo|te|ju|li)*"

编辑

如果输入字符串只能是大写或大写,则可以使用以下C#代码:

var rxPtrn =  new Regex(@"(?i)(sumlja)(m|š|mo|te|ju|li)*");
var str = "SUMLJAM"; // JUST A TEST STRING
var res = rxPtrn.Replace(str, m => (m.Groups[2].Value == m.Groups[2].Value.ToUpper() ? "SUMNJA" : "sumnja") + m.Groups[2].Value);

当您针对SUMNJAM对其进行测试时,它会输出sumljam。它没有涵盖的唯一正常情况是标题案例,但很容易添加。如果您有兴趣,请告诉我。