正则表达式
2017-03-14 11:35
351 查看
反向引用:
例子:
表达式:
以groovy为例子:groovy的replaceAll方法可以使用正则表达式
package com.spiderdt.cocacola.test
/**
* Created by ranran on 2017/3/14.
*/
class testDataDeal {
public static void main(String[] args) {
// def s = '<field flow="4days.list_amt.Y96077.sent" type="double" />'
// println(s)
// def m = s =~ /flow/
// while (m.find()) {
// println(m.group())
// }
def lineList = new File("G:/SpiderData/File/jushuitantest.txt.schema")
def resultFile = new File("G:/SpiderData/File/result.sql")
def temp
def tablename
def delimeter
lineList.eachLine {
def resultName = it =~ /<analytic\s+name=\"(.*?)\">/
if (resultName) {
tablename = it.replaceAll(/<analytic\s+name=\"(.*?)\">/, '$1')
resultFile.append("""CREATE EXTERNAL TABLE $tablename(\n""")
}
def resultDelimiter = it =~ /delimiter\=\"(.*?)\"/
if (resultDelimiter) {
delimeter = it.replaceAll(/delimiter\=\"(.*?)\">/, '$1')
println(delimeter)
}
def result2 = it =~ /<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/
if (result2) {
// println it.replaceAll(/<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/, '`$1` $2,').replaceAll(/\./, '_')
temp = it.replaceAll(/<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/, '`$1` $2,').replaceAll(/\./, '_')
resultFile.append(temp + '\n')
}
}
resultFile.append(""") PARTITIONED BY (tradeDate INT) \nROW FORMAT DELIMITED FIELDS TERMINATED BY ',' \nLOCATION'/user/hive/warehouse/test.db/endTest/';
""")
// println()
// def replaced = "abc".replaceAll(/(a)(b)(c)/, '$1$3,')
// println(replaced)
}
}
例子:
表达式:
<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+/> `\1` \2,结果:
<field flow="4days.list_amt.YZ01028.sent" type="double" /> <field flow="4days.list_amt.Y96077.sent" type="double" />
`4days.list_amt.YZ01046.sent` double,
`4days.list_amt.Y96076.sent` double,
以groovy为例子:groovy的replaceAll方法可以使用正则表达式
package com.spiderdt.cocacola.test
/**
* Created by ranran on 2017/3/14.
*/
class testDataDeal {
public static void main(String[] args) {
// def s = '<field flow="4days.list_amt.Y96077.sent" type="double" />'
// println(s)
// def m = s =~ /flow/
// while (m.find()) {
// println(m.group())
// }
def lineList = new File("G:/SpiderData/File/jushuitantest.txt.schema")
def resultFile = new File("G:/SpiderData/File/result.sql")
def temp
def tablename
def delimeter
lineList.eachLine {
def resultName = it =~ /<analytic\s+name=\"(.*?)\">/
if (resultName) {
tablename = it.replaceAll(/<analytic\s+name=\"(.*?)\">/, '$1')
resultFile.append("""CREATE EXTERNAL TABLE $tablename(\n""")
}
def resultDelimiter = it =~ /delimiter\=\"(.*?)\"/
if (resultDelimiter) {
delimeter = it.replaceAll(/delimiter\=\"(.*?)\">/, '$1')
println(delimeter)
}
def result2 = it =~ /<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/
if (result2) {
// println it.replaceAll(/<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/, '`$1` $2,').replaceAll(/\./, '_')
temp = it.replaceAll(/<field\s+flow\=\"(.*?)\"\s+type\=\"(.*?)"\s+\/>/, '`$1` $2,').replaceAll(/\./, '_')
resultFile.append(temp + '\n')
}
}
resultFile.append(""") PARTITIONED BY (tradeDate INT) \nROW FORMAT DELIMITED FIELDS TERMINATED BY ',' \nLOCATION'/user/hive/warehouse/test.db/endTest/';
""")
// println()
// def replaced = "abc".replaceAll(/(a)(b)(c)/, '$1$3,')
// println(replaced)
}
}