我正在尝试创建一个正则表达式,我可以在其中匹配字符串的首字母,然后替换特定字符后的任何内容....例如:
字符串 = 123456789:0:0 => 输出 = 123456789:2:4
我需要一个正则表达式,它需要匹配乞讨中的“123”,然后只用另一个字符串替换“0:0”。
匹配“123”很容易:^123,但在此之后我找不到方法去:只替换字符串的其余部分。
我将不胜感激。
答案 0 :(得分:0)
在不知道您确切的编程上下文的情况下,您似乎正在使用 regex_replace 函数的某个版本。通过适当的分组,这很容易做到。
不要想着要替换什么。想想你想保留什么。
^(.*?123.*?:)(0:0)(.*?)$
并作为您的替换字符串使用
$12:4$3
答案 1 :(得分:0)
要替换“0:0”,您可以使用:
model = effnet.EfficientNetB0(weights = 'imagenet')
或
Numbers between 123 and 0:0 => /^(123[0-9]+:)0:0/ replace ${1}2:4
这个 RegExp 创建了一个从 123 开始的组,直到它到达 0:0,然后我们在替换字符串中使用该组。但是,这取决于您使用的编程语言:
PHP 示例
Anything between 123 and 0:0 => /^(123.+:)0:0/ replace ${1}2:4
JavaScript 示例
$result = preg_replace("/^(123[0-9]+:)0:0/", "\${1}2:4", "123456789:0:0");
答案 2 :(得分:0)
您可以使用否定字符类来匹配直到第一次出现冒号。
在替换中使用捕获组 1,然后是替换。
^(123[^:]*:)0:0$
^
字符串开头(123[^:]*:)
使用 negated character class123
后跟除 :
之外的任何字符的 0 次以上
0:0
逐字匹配$
字符串结束如果你想在匹配第一个冒号后全部替换,你可以使用.+
^(123[^:]*:).+
看另一个regex demo
答案 3 :(得分:0)
使用 JavaScript:
const str = `123456789:0:0`;
console.log(str.replace(/(?<=^123[^:]*:).*/, `2:4`));
说明
--------------------------------------------------------------------------------
(?<= look behind to see if there is:
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
123 '123'
--------------------------------------------------------------------------------
[^:]* any character except: ':' (0 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
: ':'
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
.* any character except \n (0 or more times
(matching the most amount possible))