好吧,我有一个这样的命题逻辑句子:
~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))
以及我想做的事情,就是在每个角色之间添加空格;得到这样的东西:
~ ( ( ( -P | -Q ) -> ( P -> Q ) ) & ( ( P -> Q ) -> ( -P | Q ) ) )
此外;我不想仅在加入的字符->
和-P
中添加空格,因为它代表一个操作数和一个否定语句。
我找到了一个添加空格的正则表达式,但它使用了所有字符,即使是那些不应该有的字符。
这是我找到的表达式:
(?<=.)(?!$)
因此;做任何帮助;无论是方法还是相同的正则表达式都无关紧要。
答案 0 :(得分:1)
string subject = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))",
pattern = @"([\(\)|QP~&]|-P|-Q|->)";
Regex reg = new Regex(pattern);
Console.WriteLine(reg.Replace(subject, "$1 "));
以上代码输出:
~ ( ( ( -P | -Q ) -> ( P -> Q ) ) & ( ( P -> Q ) -> ( -P | Q ) ) )
正则表达式解释:
答案 1 :(得分:1)
版本简单易懂:
string initial = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))";
string result = string.Join<char> (" ", initial).Replace ("- ", "-");
答案 2 :(得分:0)
您可以通过添加空格来使用Linq,首先Aggregate
字符串,然后使用Replace
删除每个连字符右侧的空格。
string initial = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))";
string result = initial.Aggregate("", (c, i) => c + i + ' ').Replace(" - ", " -").Trim();
答案 3 :(得分:0)
简单的想法: - 从它做一个char [] - 通过它到列表每%2添加一个空格 - 将列表加到字符串中 - 在它上面替换以转换 - &gt;到 - &gt;等等