我有几个字符串数据集,我想在其中使用正则表达式替换来替换某些字符组合。我尝试了多种模式,但没有一个有帮助。有人可以指出我正确的模式吗?
例如:
你好,[cicuyuv v,] imijmijm
在此字符串中,无论发生何处,我都想用单个",["
替换",]"
和","
。
public class MainApp {
public static void main(String[] args) {
String data = "hello,[cicuyuv v,]imijmijm"
.replaceAll("[,[\\[]]", ",");
System.out.println(data);
}
}
答案 0 :(得分:1)
您的import sys
import csv
import xml.dom.minidom
document = xml.dom.minidom.parse(sys.argv[1])
print("Exchange,Symbol,Company,Volume,Price,Change")
tableElements = document.getElementsByTagName('table')
for tr in tableElements[2].getElementsByTagName('tr')[1:]:
data = []
for td in tr.getElementsByTagName('td'):
for node in td.childNodes:
if node.nodeType == node.TEXT_NODE:
b = node.nodeValue.replace(',',"")
b = b.strip()
b = b.replace("(","")
b = b.strip(")")
b = b.replace("$","")
data.append(b)
for a in td.getElementsByTagName('a'):
for node in a.childNodes:
if node.nodeType == node.TEXT_NODE:
b = node.nodeValue.replace(',',"")
b = b.strip()
b = b.strip(")")
b = b.split('(')
#b = b.replace("$","")
data.append(b[1])
data.append(b[0])
print('NASDAQ,'+','.join(data[3:len(data)-1]))
代表一个"[,[\\[]]"
模式,该模式与单个字符([,[\[]]
或,
(另一个字符类中的[
字符类)匹配形成了character class union)。
您可以使用
[\[]
请参见Java demo
在这里,String data = "hello,[cicuyuv v,]imijmijm".replaceAll(",[\\[\\]]", ",");
System.out.println(data); // -> hello,cicuyuv v,imijmijm
是一个正则表达式模式,先匹配,[\[\]]
,然后匹配,
或[
。在Java regex的字符类中使用]
和]
时请务必小心:它们都必须转义(以其他形式,当您在regex101.com或其他类似站点进行测试时,{{ [
中的1}}不一定要转义,建议使用Java regex测试站点,例如RegexPlanet或Java Regular Expression Tester(无从属关系)。
答案 1 :(得分:0)
System.out.println("hello,[cicuyuv v,]imijmijm".replaceAll(",(\\]|\\[)" , ","));
, matches the character , literally (case sensitive)
Capturing Group (\\]|\\[)
1st Alternative \]
\] matches the character ] literally (case sensitive)
2nd Alternative \[
\[ matches the character [ literally (case sensitive)