Replacing text between single quotes
我试图用flexcel、c和regex替换Excel公式中的一些文本,但单引号似乎很难从我所做的谷歌搜索中找到。绳子是这样的;"=RIGHT(CELL(\"filename\",'C.Whittaker'!$A$1),LEN(CELL(\"filename\",'C.Whittaker'!$A$1))-FIND(\"]\",CELL(\"filename\",'C.Whittaker'!$A$1)))"
我想用另一个名字替换C.Whittaker。它总是第一个首字母。姓氏和它总是在单引号内。
我有一个匹配的regex;(?:')[^\"]+(?:')。我认为(?:')意味着regex匹配它,但随后忽略了它作为替换,但似乎情况并非如此。怀疑问题在于如何处理字符串,但这有点超出我的理解范围。
(?:...)是一个非捕获组;它不捕获它匹配的内容(也就是说,它不使字符串的该部分在以后通过后向引用可用),但它确实使用它。你所想的是寻找,它不会消耗它们匹配的东西。
但你真的需要它们吗?您可能会发现使用引号并将其添加到替换字符串中更简单。换言之,用'X.Newname'替换'[^']+'。
- 噢,谢谢你的信息。我正考虑增quotes to the new name,太。我走了,和那个选项。
你真的需要使用regex吗?regex适用于速度很重要的复杂情况,但它会导致难以维护代码。
试试这个:
1 2 3 4
| var formula2 =
String.Join("'", formula
.Split(new [] { '\'' })
.Select((x, n ) => n % 2 == 1 ?"new name here" : x )); |
我相信你需要逃离你的角色,你想让雷杰克斯从字面上理解它…
即:(?:')。变成(?:\')。
- 不,正则表达式匹配不动了。pulls《全'C.Whittaker'和regex replace骑不动。山羊的单quotes。