我想將破折號 (-) 替換為位置 12 處的字串中的空格。我不能使用 replace("-"," ") 因為字串中可能有負數。
我試過 (?<=^(?:.{11}))。但它只在第一行得到結果。
有什么解決辦法嗎?
K120613763-01 1100625 TL -11,008 0 -11,008
N123203270-02 1101024 PWL -387 0 -387
I200543078-01 1101029 PDDW -311 0 -311
A122285277-03 1101101 PWL 530 0 530
A127477426-03 1101101 PWL 458 0 458
我想要如下結果。
K120613763 01 1100625 TL -11,008 0 -11,008
N123203270 02 1101024 PWL -387 0 -387
I200543078 01 1101029 PDDW -311 0 -311
A122285277 03 1101101 PWL 530 0 530
A127477426 03 1101101 PWL 458 0 458
注意:行以空格開頭
我使用 vb.net 在 uipath 中編程。
我試過這個,但它不起作用:
System.Text.RegularExpressions.Regex.Replace(strTxt, "/(?<=^(?:.{11}))./gm"," ")
uj5u.com熱心網友回復:
您可以在 11 個字符后匹配連字符并使用多行表示法,例如
System.Text.RegularExpressions.Regex.Replace(strTxt, "(?m)(?<=^.{11})-"," ")
uj5u.com熱心網友回復:
這一切都取決于風味,但通常^我的意思是輸入開始,使用multiline 修飾符/re/m:
/(?<=^(?:.{11}))./m
并且替換函式有時只替換模式的第一次使用global 修飾符/re/g:
/(?<=^(?:.{11}))./gm
uj5u.com熱心網友回復:
使用負向后面匹配第 12 個字符:
(?<=^.{11}).
(見現場演示)
并將其替換為 -
進行替換時,您需要使用“全域”選項。
uj5u.com熱心網友回復:
/(?<=^\s\S{10})-(?=.*$)/gmi
解釋
- Positive Lookbehind
(?<=^\s\S{10})斷言下面的正則運算式匹配:^在行首斷言位置\s匹配任何空白字符(相當于[\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])\S匹配任何非空白字符(相當于[^\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]){10}與前一個令牌完全匹配 10 次
-字面上匹配-索引為 45 10(2D 16或 55 8)的字符(不區分大小寫)- Positive Lookahead
(?=.*$)Assert 斷言下面的正則運算式匹配:.匹配任何字符(行終止符除外)*在零次和無限次之間匹配前一個令牌,盡可能多地,根據需要回饋(貪婪)$在行尾斷言位置
- 全域模式標志
g修飾符:全域。所有比賽(第一場比賽后不回傳)m修飾符:多行。導致^并$匹配每行的開頭/結尾(不僅是字串的開頭/結尾)i修飾符:不敏感。不區分大小寫的匹配(忽略 [a-zA-Z] 的大小寫)
可以在此處找到一個作業示例:https : //dotnetfiddle.net/cLZeka
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=^\s\S{10})-(?=.*$)";
string substitution = @" ";
string input = @" K120613763-01 1100625 TL -11,008 0 -11,008
N123203270-02 1101024 PWL -387 0 -387
I200543078-01 1101029 PDDW -311 0 -311
A122285277-03 1101101 PWL 530 0 530
A127477426-03 1101101 PWL 458 0 458 ";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnoreCase;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388606.html
