导航:首页 > 编程语言 > java正则替换字符串

java正则替换字符串

发布时间:2023-09-12 11:26:48

java怎样将字符串中的字母替换掉

一:思路:

使用java方法replaceAll();通过正则表达式匹配替换掉所有的字母。

二:代码如下(可直接复制出来运行,在控制台中查看效果):

publicstaticvoidmain(String[]args){
Stringstr="abc123123成你懂吗bxcxsaf";
//通过正则表达式替换掉所有的字母
StringstrNew=str.replaceAll("[a-zA-Z]","");
System.out.println(strNew);
}

运行结果如下:

三:扩展(正则表达式)

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多情况下,通常被用来,检索和替换符合某个规则的文本。

PS:有兴趣可以深入研究一下正则表达式的语法,及规则。

㈡ Java 正则表达式 替换字符串中人名

public static void main(String[] args) {

System.out.println("请输入姓名:");

Scanner in=new Scanner(System.in);

String input=in.nextLine();

//保留姓氏

char str2=input.charAt(0);

//截取名字

String str1=input.substring(1);

//用正则表达式替换(包括汉字,数字,大小写字母)

str1=str1.replaceAll("[^x00-xff]|\w", "x");

//输出替换后的名字

System.out.println(str2+str1);

}

㈢ java正则表达式如何获取字符串中所有匹配内容

java正则表达式如何获取字符串中所有匹配内容

java正则表达式提取需要用到Matcher类。

正则规则就是“一个数字加上大于等于0个非数字再加上结束符”

Pattern pattern

= Pattern.pile("(\d)[^\d]*$")

Matcher matcher

= pattern.matcher(s)

if(matcher.find())

System.out.println

(matcher.group(1)); } }

如何获取字符串中匹配到正则表达式的子串开

mport java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X"; 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Pattern pattern = Pattern.pile("(\d)[^\d]*$");Matcher matcher = pattern.matcher(s);if(matcher.find())System.out.println(matcher.group(1));}}

正则表达式获取字符串

string pattern=@"<font>(.+?)</font>"
取分组 Match.group[1]

JS如何用正则表达式 获取字符串内的匹配部份?

实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test
实现的机制:通过replace的回调函数获取。

可以通过下面的代码获取匹配部分

var str = "abcdefgname='test'sddfhskshjsfsjdfps";

var reg = /name='((w|-|s)+)/ig;

str.replace(reg, function() {
console.log(arguments.length); 5
console.log(arguments[1]);test
});

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

正则表达式如何获取被匹配字符串的匹配组名

java正则提取需要用到Matcher类,下面给出案例示例供参考
需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来
在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern = Pattern.pile("(\d)[^\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
关于Matcher 中的几个方法说明:
Mathcer.start()
Matcher.end()
Matcher.group()
当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串
示例代码如下,具体功能请参考注释
Pattern p=Pattern.pile(“d+”);
Matcher m=p.matcher(“aaa2223bb”);
m.find();匹配2223
m.start();返回3
m.end();返回7,返回的是2223后的索引号
m.group();返回2223
Mathcer m2=p.matcher(“2223bb”);
m2.lookingAt(); 匹配2223
m2.start(); 返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end(); 返回4
m2.group(); 返回2223
Matcher m3=p.matcher(“2223”); 如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出错,因为不匹配返回false
m3.matches(); 匹配整个字符串
m3.start(); 返回0
m3.end(); 返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串
m3.group(); 返回2223
另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.
示例如下:
Pattern p=Pattern.pile(“([a-z]+)(d+)”);
Matcher m=p.matcher(“aaa2223bb”);
m.find(); 匹配aaa2223
m.groupCount(); 返回2,因为有2组
m.start(1); 返回0 返回第一组匹配到的子字符串在字符串中的索引号
m.start(2); 返回3
m.end(1); 返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.end(2); 返回7
m.group(1); 返回aaa,返回第一组匹配到的子字符串
m.group(2); 返回2223,返回第二组匹配到的子字符串
注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。

C# 正则表达式获取字符串?

针对你的问题:
<aa>是给数组命名
(?<name>subexpression)
其中name是有效的组名称,而subexpression是任何有效的正则表达式模式。 name不得包含任何标点符号字符,并且不能以数字开头。
这个方式相当于下面这个表达式
"(?<!0-9a-zA-Z)([0-9]|[a-z]|[A-Z]){1,}"

java正则表达式如何获取分组匹配内容

String str = "我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.";
d 表示0-9 任意一个数字 后面有+号 说明这个0-9单个数位出现一到多次 比如21312314
String reg = "\d+";
Pattern是一个正则表达式经编译后的表现模式。
Pattern pattern = Pattern.pile (reg);
Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
Matcher matcher = pattern.matcher (str);
只有执行了find()方法 后,状态机matcher才是真正开始进行匹配工作的!
while (matcher.find ())
{
matcher.group()返回匹配到的子字符串
System.out.println (matcher.group ());
}
}

Java正则表达式匹配是否存在字符串。

正则表达式为:.*a.*b.*c.*
package .test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
/**
* @param args
*/
public static void main(String[] args) {
TODO Auto-generated method stub
String source = "abcdefg " +
"uaibec " +
"wabbcd " +
"adb " +
"acb";
String regex = "(.*a.*b.*c.*)";
Pattern pattern = Pattern.pile(regex,Pattern.MULTILINE);
Matcher matcher = pattern.matcher(source);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
你可以直接复制出来,运行一下就可以了

㈣ java正则表达式,怎么替换指定字符串为 指定字符+原字符串

String text = "ABCDE";
String regex = "([A-Z])";//这里的()表示保存匹配的结果
System.out.println(text.replaceAll(regex,"\\\\$1")); //$1取出保存的第1个

㈤ java过滤sql关键字的正则替换掉

java过滤sql关键字的正则替换掉方法如下:
可以在C#中这样做:Regexregex = newRegex(@"]*>[^");
stringcleanedHtml = regex.Replace(html, "");
可是我并不想再写个循环去遍历每条记录,然后保存每条记录,我想在数据库中一步到位,而sql只提供了简单的replace函数,这个函数明显不能达到咱的要求,那就去写一个自定义函数吧。
函数源代码如下:CREATE functiondbo.regexReplace
(@source ntext,--原字符串@regexp varchar(1000),--正则表达式@replace varchar(1000),--替换值@globalReplace bit=1,--是否是全局替换@ignoreCase bit=0 --是否忽略大小写)returnS varchar(1000)AS
begin
declare@hr intege
declare@objRegExp integer
declare@result varchar(5000)exec@hr =sp_OACreate'VBScript.RegExp',@objRegExp OUTPUT
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Pattern',@regexp
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Global',@globalReplace
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'IgnoreCase',@ignoreCase
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OAMethod@objRegExp,'Replace',@result OUTPUT,@source,@replace
IF@hr <>0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OADestroy@objRegExp
IF@hr <>0 begin
returnnullend
return@result
end
需要注意的是,即使写好了这个函数,也并不能马上使用。执行这个函数时可能会出现以下的错误:Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to procere 'sys.sp_OACreate' of component 'Ole Automation Proceres' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Proceres' by using sp_configure. For more information about enabling 'Ole Automation Proceres', see "Surface Area Configuration" in SQL Server Books Online.
这是因为未开启Ole Automation Proceres选项,MSDN中的Ole Automation Proceres选项。执行下面的语句开启这个选项:sp_configure'show advanced options',1;GO
RECONFIGURE;GOsp_configure'Ole Automation Proceres',1;GO
RECONFIGURE;GO
所有的准备工作都已经做好,那就试验一下吧。
Example1:忽略大小写并替换selectdbo.regexReplace(�',']*>[^','',1,1)
Example2: 使用贪婪匹配
html代码:
Also Available - Smith & Hogan: Criminal Law Cases & Materials 10th ed
There is, as ever, detailed analysis of the many recent case developments, in particular,
a revision of the chapter dealing with secondary liability and joint enterprise.
调用代码:selectdbo.regexReplace(html,']*>(.| )*?','',1,1)
Example3:去除html标签selectdbo.regexReplace('
Key Contact:
Mr Jack, Zhou
General Manager
Mr A, Ho
Marketing Director
Overseas Sales
MsWinny, Luo
Sales Manager
Overseas Sales',']*>','',1,0)
Example4:数据库字段值替换updateBooks。

㈥ JAVA 替换特殊字符 的 正则表达式

JAVA替换特殊字符的正则表达式


代码如下:
importjava.util.regex.*;

//表达式对象
Patternp=Pattern.compile("[\'\*\~]");

//创建Matcher对象
Matcherm=p.matcher("Stringstr="t'e*s~t";");

//替换
Stringnewstring=m.replaceAll("[$0]");


效果如下:




正则参考http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

㈦ java用正则表达式判定特殊字符是否,存在就替换的问题

String的replaceAll方法可以使用正则表达式进行搜索并替换,但不改变原字符串,如果需要改变原字符串,则需要用赋值语句:
ss=ss.replaceAll("正则表达式","替换内容");
比如将"aabbcc[{dd}]eeff[{gg}]hhiijjkkll[{mmnn}]oopp"里的[{等特殊符号去掉:
ss=ss.replaceAll("\W","");

㈧ java正则表达式多个字符串替换怎样实现

str.replaceAll("[A-Z]+\\d{3}", "hello").replaceAll("[^A-Za-z]", "==");

㈨ java正则表达式替换一段字符串

Java正则表达式 .*(from.*)$ 替换成 select count(*) $1

完整的Java替换程序如下

publicclassAA{
publicstaticvoidmain(String[]args){
Strings="Selectafromxxxa"+"wherea.id=:id";
Stringregex=".*(from.*)$";
Stringresult=s.replaceAll(regex,"selectcount(*)$1");
System.out.println(result);
}
}

运行结果
selectcount(*)fromxxxawherea.id=:id
因为我不知道TbItem.class.getName()方法返回的表名,所以用xxx代替.
你可以用Strings="Selectafrom"+TbItem.class.getName()+"a"+"wherea.id=:id";没问题不用改.
阅读全文

与java正则替换字符串相关的资料

热点内容
台达文本编程软件 浏览:716
单片机烧写器使用视频 浏览:996
拍照哪个app比较好 浏览:132
dhcp服务器不能分配MAC地址 浏览:964
java伪随机数 浏览:128
涂色书怎么解压 浏览:465
三角形圆边编程 浏览:457
手机压缩文件怎么压缩到十兆以下 浏览:987
云主机云服务器品牌 浏览:345
安卓emulated文件夹如何打开 浏览:315
采用fifo页面置换算法是 浏览:194
如何上网代理服务器 浏览:593
Hro系统源码 浏览:847
宝库源码 浏览:342
路飞和熊排解压力 浏览:625
php定时更新 浏览:357
数控5轴编程培训一般多久 浏览:560
cadpdf图层 浏览:250
用登号器出现服务器未响应是什么 浏览:905
java算法是什么 浏览:636