C# regex来修复输入字符串

C# regex来修复输入字符串,c#,.net,regex,string,C#,.net,Regex,String,我的问题如下 我每行读取一个文件行,每行包含以下文本: 126,1,1,1,0,1,0,-0.005,-0.005,0.01,0.01,1.,-1.,0.,0.,0.,0.,1.,0., 5P 8 -0.005,0.01,0.,0.,1.; 5P 9 在一个循环中,每当我找到一个“,”时,我都会分割每个元素,并将其保存到一个数组中 PS[k].参数=PSection

我的问题如下

我每行读取一个文件行,每行包含以下文本:

126,1,1,1,0,1,0,-0.005,-0.005,0.01,0.01,1.,-1.,0.,0.,0.,0.,1.,0.,       5P      8
-0.005,0.01,0.,0.,1.;                                                  5P      9
在一个循环中,每当我找到一个“,”时,我都会分割每个元素,并将其保存到一个数组中 PS[k].参数=PSection[k].拆分(',')

然后,我尝试将每个元素保存到带有标记的新文本文件中,例如:

Element1 = 126
Element2 = 1
等等。。。我的问题是,我需要用正确的表示法“1.0”“0.0”“1.0”修复指定的/不完整的十进制元素,例如:“1”“0”“1.”

我已经搜索了很长时间,但我还没有发现我是否可以使用通配符来修复这些元素。例如,替换我使用的空白 PS[k]。参数[l]=PS[k]。参数[l]。替换(“,”); 在执行拆分过程之前

到目前为止,我的输出只是用逗号“,”分隔的元素,但小数不完整。

您可以在分割之前或之后用
$10$2
替换所有
({0,1}\d+\)([^\d])
,以解决该问题


您可以将该匹配替换为firstGroup+“0”+secondGroup

在拆分前在点和逗号/结束之间添加一个零:

str = Regex.Replace(str, "\\.(?=;|,|$)", ".0");

这实际上在点和逗号/结束之间插入了一个零。

这是什么语言/平台?从
.Replace()
中看起来像是C#。这是C#,很抱歉忽略了这一点。您需要检查句点后是否没有任何内容,也不要使用
{0,1}
只需使用可选的正则字符
否,他说他的字符串在一行中,如果他先进行修复,则不能将
$
添加为字符串的结尾。是的,
{0,1}
是一样的,我只是喜欢
{0,1}
cz,它比在很多情况下使用的
更清晰。我没有说要在末尾添加
$
,后面不能有数字,这就是我的意思。因为如果有,那么您将执行以下操作,将
1.1
更改为
1.0
。更具体地说,在他的示例字符串中,您将使用
0.01
,并使其成为
0.0
,这是否也会删除逗号/结尾?@Angga No-我使用了一个向前看的方法,这是不正确的-consuming@SadShadow现在试试。我假设它是java,但我已将代码更改为C,这很有效,但没有replaceALL,我将其用作
string input0=Regex.Replace(输入“\\”(?=,|$),“.0”)为了修复0和0,我也使用了此替换。;这在其他场合也发生过<代码>LineTempP2=LineTempP2.Replace(“0.,”,“0,”)。Replace(“0.;,“0;”)