在使用regex时,我似乎找不到任何关于如何用引号包装结果捕获组的答案。
如果我拿到这个
Abcd abcd 12345
Abcd 1234 12345
我想要这个:
"Abcd" "abcd" 12345
或者这个:
"Abcd" 1234 12345
我怎么能做这样的事
"$1" (?$2=[^0-9] \"$2\" | $2)在替换输入中?
或者换句话说:我需要检查捕获组的结果(匹配的结果)是否是一种或另一种类型,然后用引号换行。
读为:“如果捕获组包含非数字字符,则用用引号包装的值替换它,否则替换为数字”。
我似乎无法弄清楚如何在结果输入中进行实际的IF /然后操作,也无法理解它在reg本身中的工作方式(这里缺少一张思维图)。
更多信息:
我有这两个变体(请注意不同的第二组):
string-digits digits digits datetime datetime string string digits-digits string
string-digits string-digits-whitespace digits datetime datetime string string string-digits string
到目前为止,我正在尝试使用这个正则表达式:
(.+) (THIS IS THE TRICKY PART) ([0-9]+) ([0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+) [0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+ (.+) (.+) (.+-[0-9]+) (.+)
我需要创建这个:
{
"unique-key" : "$1",
"unique-key" : $2, <-- this second capture group should be wrapped in quotes if the value is not an integer.
"unique-key" : $3,
"unique-key" : "$4",
"unique-key" : "$5",
"unique-key" : "$6",
"unique-key" : "$6",
"unique-key" : "$7",
"unique-key" : "$8"
}发布于 2022-09-12 09:59:37
如果我正确理解的话--数字应该保持不变。因此,只有包含非数字字符的单词应该用引号包围.
然后,模式看起来可能如下:
([^\s]*[^\d\s]+[^\s]*)与此模式匹配的内容应替换为"$1“。
https://stackoverflow.com/questions/73687319
复制相似问题