java非法字符 u007f_groovy regex非法字符

我有一个groovy脚本,它将一些格式很差的数据转换为XML。这部分工作得很好,但它也很高兴地传递了一些在XML中不合法的字符。所以我添加了一些代码来去掉这些,这就是问题的根源所在。

未编译的代码如下:

def illegalChars = ~/[\u0000-\u0008]|[\u000B-\u000C]|[\u000E-\u001F]|[\u007F-\u009F]/

我想知道的是,为什么?我在这里做错什么了?我在里面测试了这个regex

http://regexpal.com/

它按预期工作,但在groovy中编译它时出错:

[错误]生成错误

[信息]——————————————————————————————————————————————————————————————————————————————————————————————————————————————-

[信息]行23:26:意外字符:0x0

上面的行是

line 23

. 周围的行只是变量声明,我在使用regex时没有更改。

谢谢!

更新:

代码可以编译,但并不像我预期的那样进行过滤。

在regexpal中,我放置了regex:

[\u0000-\u0008\u000b-\u000c\u000e-\u001f\u007f-\u009f]

测试数据:

name='lang'>ECHEMICAL IMMUNOLOGY AND ALLERGY

72-883146.757500

name='pubc'>47

1NUMBER

Dvorak, A.KARGER

name='rr'>GBP013.51

1660-2242

name='class1'>TS

S

name='class2'>616.079

Subcellular Localization of the

Cytokines, Basic Fibroblast Growth Factor and Tumor Necrosis Factor- in Mast

CellsRN170369808VOL 85

2005E

name='title'>CHEMICAL IMMUNOLOGY AND ALLERGY

name='page'>89-97

3146.757500

name='pubc'>47

1

这是从一个包含非法字符的文件中进行的抓取,所以有点随机。但是regexpal只突出显示了非法字符,但是在groovy中,它甚至用空字符串替换了“”字符,因此它基本上消灭了整个文档。

代码段:

def List parseFile(File file){

println "reading File name: ${file.name}"

def lineCount = 0

List data = new ArrayList()

file.eachLine {

String input ->

lineCount ++

String line = input

if(input =~ illegalChars){

line = input.replaceAll(illegalChars, " ")

}

Map document = new HashMap()

elementNames.each(){

token ->

def val = getValue(line, token)

if(val != null){

if(token.equals("ISSUE")){

List entries = val.split(";")

document.putAt("year",entries.getAt(0).trim())

if(entries.size() > 1){

document.putAt("volume", entries.getAt(1).trim())

}

if(entries.size() > 2){

document.putAt("issue", entries.getAt(2).trim())

}

} else {

document.putAt(token, val)

}

}

}

data.add(document)

}

println "done"

return data

}

我看不出这两个人有什么不同的行为;我是不是错过了什么?

再一次,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值