首頁  >  文章  >  Java  >  Java程式設計中正規表示式的用法總結

Java程式設計中正規表示式的用法總結

黄舟
黄舟原創
2017-01-20 11:08:261153瀏覽

  這篇文章主要介紹了Java編程中正則表達式的用法總結,正則表達式是一種強大的字符串處理工具,Java對正則表達式的支持還是很不錯的,我們先來整理一下正則表達式的一些基礎知識:

  1. 字串中的正規表示式

  使用正規表示式可以對字串進行尋找、提取、分割、替換等操作。 String類別當中提供以下幾個特殊方法:

  boolean matches(String regex):判斷該字串是否符合指定的正規表示式。

  String replaceAll(String regex, String replacement):將該字串中所有符合regex的子字串替換成replacement。

  String[] split(String regex):以regex作為分隔符,把該字串分割成多個子字串。

  以上這些特殊的方法都依賴Java提供的正規表示式。

  2. 建立正規表示式

  x: 字元x(x可代表任何合法的字元);

  

Java程式設計中正規表示式的用法總結

 7.一些实例

  例子1 

function replace(content){
 
 var reg = '\\[(\\w+)\\]',
 
 pattern = new RegExp(reg, 'g');
 
 return content.replace(pattern, '');
 
 }
 
 //或
 
 function replace(content){
 
 return content.replace(/\[(\w+)\/g, '');
 
 }

  例子2  

//zero-width look behind的替换方案
 
  //(?<=...)和(?
  //方法一:反转字符串,用lookahead进行搜索,替换以后再倒回来,例如:
 
  String.prototype.reverse = function () {
 
  return this.split(&#39;&#39;).reverse().join(&#39;&#39;);
 
  }
 
  //模拟&#39;foo.bar|baz&#39;.replace(/(?<=\.)b/, &#39;c&#39;) 即将前面有&#39;.&#39;的b换成c
 
  &#39;foo.bar|baz&#39;.reverse().replace(/b(?=\.)/g, &#39;c&#39;).reverse() //foo.car|baz
 
  //方法二:不用零宽断言,自己判断
 
  //模拟&#39;foo.bar|baz&#39;.replace(/(?<=\.)b/, &#39;c&#39;) 即将前面有&#39;.&#39;的b换成c
 
  &#39;foo.bar|baz&#39;.replace(/(\.)?b/, function ($0, $1) {
 
  return $1 ? $1 + &#39;c&#39; : $0;
 
  }) //foo.car|baz
 
  //模拟&#39;foo.bar|baz&#39;.replace(/(?
  &#39;foo.bar|baz&#39;.replace(/(\.)?b/, function ($0, $1) {
 
  return $1 ? $0 : &#39;c&#39;;
 
  }) //foo.bar|caz
 
  //这个方法在一些比较简单的场景下有用,并且可以和lookahead一起用
 
  //但也有很多场景无效,例如:
 
  //&#39;tttt&#39;.replace(/(?<=t)t/g, &#39;x&#39;) 结果应该是&#39;txxx&#39;
 
  &#39;tttt&#39;.replace(/(t)?t/g, function ($0, $1) {
 
  return $1 ? $1 + &#39;x&#39; : $0;
 
  }) // txtx

 例子3

$&符号的使用
 
 function escapeRegExp(str) {
 
 return str.replace(/[abc]/g, "($&)");
 
 }
 
 var str = &#39;a12b34c&#39;;
 
 console.log(escapeRegExp(str)); //(a)12(b)34(c)

以上就是Java编程中正则表达式的用法总结的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn