通过IndexOf进行正则表达式还是字符串操作?

我必须在字符串中替换匹配单词出现前后的字符。

我想知道:

1。。如果我使用正则表达式或使用indexOf,循环等时, 功能 是否更好?

2。。什么被认为更 可读代码 :正则表达式或使用indexOf,遍历字符串等?

3。时间复杂度 ),从而降低了复杂度。

澄清一下,我要问的是使用正则表达式或仅进行字符串操作会更好。在上方查看我的问题

mayanfei_777 回答:通过IndexOf进行正则表达式还是字符串操作?

这是一个使用正式的Java regex模式匹配器的迭代解决方案:

for column in df.columns[1:]: # All but comment column.
   df[column] = df[column].str.contains(df['Comment'])

此打印:

String input = "abc1111abc3434";
StringBuffer buffer = new StringBuffer();
String pattern = "((?!abc).)*abc";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);
while (m.find()) {
    String replace = m.group(0).replaceAll(".","*");
    replace = replace.substring(0,replace.length()-3) + "abc";
    m.appendReplacement(buffer,replace);
}
int length = buffer.length();
m.appendTail(buffer);
String result = buffer.substring(0,length) + buffer.substring(length).replaceAll(".","*");
System.out.println(result);

这里使用的技巧是以下正则表达式模式:

abc****abc****

这将匹配不是序列((?!abc).)*abc 但以abc结尾的任何内容。也就是说,此模式的第一部分是您要用abc屏蔽的实际内容。在每次匹配时,我们都将屏蔽内容附加到StringBuffer后面,并加上***标记。请注意,这会导致边缘情况。完成所有替换后,可能会出现不包含abc内容的尾巴。在这种情况下,我们只需屏蔽整个子字符串并追加到StringBuffer。

,

在资源使用完成后,调用close()方法。

这确保资源被关闭,并清除分配的内存。

根据您的情况,

input1.close();

input2.close();

两个结果都打印完之后。

扫描仪(JDK8)的详细API:https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html

,
String str ="abc1111abc3434";
System.out.println( str.replaceAll("[^\"abc\"]","*"));
本文链接:https://www.f2er.com/3128932.html

大家都在问