相关疑难解决方法(0)

Javascript中是否有RegExp.escape函数?

我只想用任何可能的字符串创建一个正则表达式.

var usersString = "Hello?!*`~World()[]";
var expression = new RegExp(RegExp.escape(usersString))
var matches = "Hello".match(expression);
Run Code Online (Sandbox Code Playgroud)

有内置的方法吗?如果没有,人们会用什么?Ruby有RegExp.escape.我觉得我不需要自己编写,那里必须有标准的东西.谢谢!

javascript regex

404
推荐指数
10
解决办法
10万
查看次数

gsub速度与模式长度

我最近一直在gsub广泛使用,我注意到短模式比长模式运行得更快,这并不奇怪.这是一个完全可重现的代码:

library(microbenchmark)
set.seed(12345)
n = 0
rpt = seq(20, 1461, 20)
msecFF = numeric(length(rpt))
msecFT = numeric(length(rpt))
inp = rep("aaaaaaaaaa",15000)

for (i in rpt) {
  n = n + 1
  print(n)
  patt = paste(rep("a", rpt[n]), collapse = "")
  #time = microbenchmark(func(count[1:10000,12], patt, "b"), times = 10)
  timeFF = microbenchmark(gsub(patt, "b", inp, fixed=F), times = 10)
  msecFF[n] = mean(timeFF$time)/1000000.

  timeFT = microbenchmark(gsub(patt, "b", inp, fixed=T), times = 10)
  msecFT[n] = mean(timeFT$time)/1000000.
}

library(ggplot2)
library(grid)
library(gridExtra)

axis(1,at=seq(0,1000,200),labels=T)

p1 = qplot(rpt, …
Run Code Online (Sandbox Code Playgroud)

regex string r gsub stringi

26
推荐指数
1
解决办法
940
查看次数

替换文字但保留案例

我有一组我需要替换的字符串,但我需要保留字母的大小写.输入字和输出字的长度相同.

例如,如果我需要用"qwer"替换"abcd",那么应该发生以下情况:

"AbcD" translates to "QweR"
"abCd" translates to "qwEr"
Run Code Online (Sandbox Code Playgroud)

等等.

现在我正在使用JavaScript replace,但大写字母在翻译时丢失了.

r = new RegExp( "(" + 'asdf' + ")" , 'gi' );
"oooAsdFoooo".replace(r, "qwer");
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

javascript

16
推荐指数
2
解决办法
7489
查看次数

在C#中保持案例完整的同时替换文本

我有一组我需要用来替换的句子,例如:

abc => cde
ab df => de
...
Run Code Online (Sandbox Code Playgroud)

我有一个文本在哪里进行更改.但是我无法预先知道所述文本的情况.所以,例如,如果我有:

A bgt abc hyi. Abc Ab df h
Run Code Online (Sandbox Code Playgroud)

我必须更换并获得:

A bgt cde nyi. Cde De h
Run Code Online (Sandbox Code Playgroud)

或尽可能接近,即保持情况

编辑:因为我看到很多混乱,我会尝试澄清一点:

我问的是一种在更换之后保留帽子的方法,我不认为它通过了很好(没有很好地解释什么是thaat)所以我将使用真实的单词给出一个更现实的例子.

把它想象成一个gossary,用它们的正义代替表达式,所以如果我映射:

didn't achieve success => failled miserably
Run Code Online (Sandbox Code Playgroud)

然后我得到了作为输入的句子:

As he didn't achieve success, he was fired
Run Code Online (Sandbox Code Playgroud)

我会的

As he failled miserably, he was fired
Run Code Online (Sandbox Code Playgroud)

但是如果没有资本化,那么如果实现或成功资本化,那么就会失败,如果有任何超过1个字母的资本化,那么这将是悲惨的

我的主要可能性是(我真正想要考虑的是)

  • 只有第一个单词的首字母大写
  • 只有每个单词的第一个字母大写
  • 所有字母都大写

如果我可以处理那些已经可以接受的三个 - 我认为这是更容易的 - 当然如果可以获得更深入的解决方案会更好

有任何想法吗?

c# string replace case

9
推荐指数
1
解决办法
2691
查看次数

如何使用正则表达式替换匹配保留大小写?

如何使用单个正则表达式替换所有单词townvillage保留每个匹配的第一个字母的大小写?

输入示例:

Towns are small cities. I live in a town.
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Villages are small cities. I live in a village.
Run Code Online (Sandbox Code Playgroud)

regex

6
推荐指数
1
解决办法
181
查看次数

高效的字符串搜索和替换

我想在一个由职称组成的数据库中清理大约200万个条目.许多都有几个缩写,我希望改为一个一致且更容易搜索的选项.到目前为止,我只是使用单独的mapply(gsub(...)命令运行列.但是我做了大约80次更改,因此运行需要将近30分钟.必须有一个更好的方法.我是字符串搜索的新手,我找到了*$诀窍,这有助于.有没有办法在一个单独的搜索mapply?我想可能更快?任何帮助都会很棒.谢谢.

以下是一些代码.测试是一个包含200万个人职位的专栏.

test <- mapply(gsub, " Admin ", " Administrator ", test)
test <- mapply(gsub, "Admin ", "Administrator ", test)
test <- mapply(gsub, " Admin*$", " Administrator", test)
test <- mapply(gsub, "Acc ", " Accounting ", test)
test <- mapply(gsub, " Admstr ", " Administrator ", test)
test <- mapply(gsub, " Anlyst ", " Analyst ", test)
test <- mapply(gsub, "Anlyst ", "Analyst ", test)
test <- mapply(gsub, " Asst ", " Assistant ", …
Run Code Online (Sandbox Code Playgroud)

regex performance r data-cleaning

1
推荐指数
1
解决办法
156
查看次数

使用purrr :: reduce2复制嵌套gsub调用的行为

给定样本字符串:

tst_str <- c("abc", "123", "klm", "lop")
Run Code Online (Sandbox Code Playgroud)

我想做以下替换:

  • abc -> za12
  • 123 -> poi
  • klm -> uyt

期望的结果

简单的嵌套嵌套gsub可以产生以下结果:

gsub(
    pattern = "abc",
    replacement = "za12",
    x = gsub(
        pattern = "123",
        replacement = "poi",
        x = gsub(
            pattern = "klm",
            replacement = "uyt",
            x = tst_str
        )
    )
)
# [1] "za12" "poi"  "uyt"  "lop" 
Run Code Online (Sandbox Code Playgroud)

问题

我想使用purrr::map*purrr::reduce函数得出相同的结果.我最初的想法是利用purrr::reduce2

purrr::reduce2(
    .x = c("abc", "123", "klm"),
    .y = c("za12", "poi", "uyt"),
    .f = function(x, y, …
Run Code Online (Sandbox Code Playgroud)

functional-programming r higher-order-functions purrr

1
推荐指数
1
解决办法
79
查看次数