我正在做一点正则表达式以识别复杂的数字。我需要在C#学校课程中使用它。 我必须认识到复杂的数字: 3 + 5I 3 + 5K 4 12-15 6个+ F7
因此,虚部可以在值后面或前面加上任何字符。 我写了这个正则表达式:
(?<reale>[+-]?\d+)(?<immaginaria>[+-]\d+[a-zA-Z]|[+-][a-zA-Z]\d+)
问题是,当我采取名为&#34; immaginaria&#34;我已经得到了虚构的部分字符(像我或j),我希望得到它没有.. 我找到了使用Look-ahead和Look-behind的解决方案但是我在尝试在我的正则表达式中实现它时遇到了问题(它是我写的第一个正则表达式)
(?<reale>[+-]?\d+)(?<immaginaria>[+-]\d+(?=[a-zA-Z])|[+-](?=[a-zA-Z])\d+)
答案 0 :(得分:0)
我修改了你的第一次尝试,将符号和虚部的值分开,你可以在成功匹配后将它们连接起来:
(?<reale>[+-]?\d+)((?<immaginariasign>[+-])(?<immaginaria>\d+)[a-zA-Z]|(?<immaginariasign>[+-])[a-zA-Z](?<immaginaria>\d+))