1. 程式人生 > >flex_(5)正則表示式_WikiEditor解析程式;

flex_(5)正則表示式_WikiEditor解析程式;

=>WikiEditor.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
   xmlns:s="library://ns.adobe.com/flex/spark" 
   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
   creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import com.cen.programmingas3.wikiEditor.CurrencyConverter;
import com.cen.programmingas3.wikiEditor.URLParser;
import com.cen.programmingas3.wikiEditor.WikiParser;

import mx.events.FlexEvent;

/*轉換類*/
private var wikiParser:WikiParser;

protected function creationCompleteHandler(event:FlexEvent):void
{
/*初始化_wikiParser示例已經包含原始資料*/
wikiParser = new WikiParser();

inputText.text = wikiParser.wikiData;

outputText.text = wikiParser.parseWikiString(inputText.text);
}

protected function testButton_clickHandler(event:MouseEvent):void
{
var outStr:String;
outStr = wikiParser.parseWikiString(inputText.text);

if(dollarToEuro.selected) {
outStr = CurrencyConverter.usdToEuro(outStr);
}

if(urlToATag.selected) {
outStr = URLParser.urlToATag(outStr);
}

outputText.text = outStr;
}

]]>
</fx:Script>
<!--wiki解析程式-->
<s:VGroup width="650" height="450" verticalAlign="middle" verticalCenter="0" horizontalAlign="center"
  horizontalCenter="0">
<s:Panel width="100%" height="100%" title="解析程式_原始字串">
<s:VGroup width="100%" height="100%">
<s:TextArea id="inputText" width="100%" height="100%"/>
<s:HGroup width="100%" horizontalAlign="right">
<s:CheckBox id="dollarToEuro" label="$ to €"/>
<s:CheckBox id="urlToATag" label="URLs to &lt;a&gt;"/>
<s:Button id="testButton" label="轉換" click="testButton_clickHandler(event)"/>
</s:HGroup>
</s:VGroup>
</s:Panel>

<s:Panel width="100%" height="100%" title="HTML文字">
<s:TextArea id="outputText" width="100%" height="100%"/>
</s:Panel>
</s:VGroup>
</s:Application>

=>WikiParser .as

package com.cen.programmingas3.wikiEditor
{
/**
 * wiki解析類
 * - 使用正則表示式將wiki字串轉換成HTML文字;
 */ 
public class WikiParser {

/**
 * 屬性*/
/**
 * wiki字串
 */
public var wikiData:String; 

/**
 * 建構函式:使用原始資料初始化wikiData屬性;
 */
public function WikiParser() {
wikiData = setWikiData();
}

/**
 * 返回原始wiki資料
 */
private function setWikiData():String {
/*原始資料*/
var str:String = "'''Test wiki data'''\n" +// 加粗字型;
"\n" +
"This is a test. This is ''only'' a test.\n" +// 斜體;
"Basic rules:\n" +
"* 3 single quote marks indicates '''bold'''.\n" +
"* 2 single quote marks indicates ''italics''.\n" +
"* An asterisk creates a bulleted list item.\n" +
"* Use blank lines as paragraph separators.\n" +
"\n" +
"You can convert a dollar value like this: $9.95.\n" +
"\n" +
"Here's a URL to convert: http://www.adobe.com.\n" +
"\n" +
"Here's an e-mail address to convert: mailto:

[email protected]";

return str;
}

/**
 * 轉換方法:
 * 轉換wiki字串為HTML文字;
 */
public function parseWikiString (wikiString:String):String {
// 粗體處理
var result:String = parseBold(wikiString);

// 斜體處理
result = parseItalic(result);

// 段落處理
result = linesToParagraphs(result);

// 專案符號處理
result = parseBullets(result);

return result;
}

/**
 * 粗體處理:將'''foo'''轉換成<b>foo</b>
 */
private function parseBold(input:String):String {
var pattern:RegExp = /'''(.*?)'''/g;// 有限匹配;
return input.replace(pattern, "<b>$1</b>");
}

/**
 * 斜體處理:將''foo''轉換成<i>foo</i>;
 */
private function parseItalic(input:String):String {
var pattern:RegExp = /''(.*?)''/g;
return input.replace(pattern, "<i>$1</i>");
}

/**
 * 專案符號;將* foo轉換成<li>foo</li>;
 */
private function parseBullets(input:String):String {
var pattern:RegExp = /^\*(.*)/gm;
return input.replace(pattern, "<li>$1</li>");
}

/**
 * 段落處理:使用<p>HTML標籤替換空行;
 */
private function linesToParagraphs(input:String):String {

/**
 * Strips out(剔除) empty lines(空行), which match /^$/gm
 */
var pattern:RegExp = /^$/gm;
var result:String = input.replace(pattern, "");

/**
 * 除了專案列表項外,其他都加上<P>標籤;
 */
pattern = /^([^*].*)$/gm;
return result.replace(pattern, "<p>$1</p>");
}  
}
}

=>URLParser.as

package com.cen.programmingas3.wikiEditor
{

/**
 * 實用類:轉換URL字串
 * _ such as "http://www.adobe.com" to HTML anchor links, such as "<a href='http://www.adobe.com'>http://www.adobe.com</a>;
 * 
 * 特別說明:在此說明的例子中,url以及ftp正則表示式不是正規、嚴謹的,這裡只是便於說明;
 */
public class URLParser
{
/**
 * Converts HTTP and FTP URLs to anchor links. This function assembles(組裝) a 
 * RegExp pattern out of multiple parts: protocol(協議), urlPart, and optionalUrlPart.
 */
public static function urlToATag(input:String):String {

/**
 * 協議部分_http://
 * Matches either http:// or ftp://. (?: indicates that the interior group
 * is not a capturing group.(不捕獲組)
 */
var protocol:String = "((?:http|ftp)://)";

/** 
 * www.adobe
 */
var urlPart:String = "([a-z0-9_-]+\.[a-z0-9_-]+)";// matches foo.example;

/**
 * .com
 */
var optionalUrlPart:String = "(\.[a-z0-9_-]*)";

/**
 * 組裝正則表示式
 * Assembles the pattern from its component parts.
 */
var urlPattern:RegExp = new RegExp (protocol + urlPart + optionalUrlPart, "ig");

/**
 * Replaces matching URL strings with a replacement string. The call to 
 * the replace() method uses references to captured groups (such as $1) 
 * to assemble the replacement string.
 */
var result:String = input.replace(urlPattern, "<a href='$1$2$3'><u>$1$2$3</u></a>");// <u>新增下劃線;

/** 
 * Next, find e-mail patterns and replace them with <a> hyperlinks.
 * 轉換郵件地址
 */
result = emailToATag(result); 
return result;
}

/**
 * 如:mailto:[email protected]
 * Replaces an e-mail pattern with a corresponding(相對應的) HTML anchor hyperlink.
 * Like the urlToATag() method, this method assembles a regular expression out of constituent(組成) parts.
 */
public static function emailToATag(input:String):String {
/**
 * mailto:
 */
var protocol:String = "(mailto:)"; // $1;

/**
 * 姓名
 * Matches the name and @ symbol, such as [email protected]
 */
var name:String = "([a-z0-9_-]+(?:\.[a-z0-9_-])*@)";// $2;

/**
 * For the e-mail pattern [email protected], matches 
 * mail.example. (including the trailing dot).
 */
var domain:String = "((?:[a-z0-9_-].)*)";// $3;

/**
 * Matches the superdomain, such as com, uk, or org., which is 2 - 4 letters.
 */
var superDomain:String = "([a-z]{2,4})";// $4;

/**
 * Assembles(組裝) the matching regular expression out of constituent parts.
 */
var emailPattern:RegExp = new RegExp (protocol + name + domain + superDomain, "ig");

/**
 * Replaces matching e-mail strings with a replacement string. The call to 
 * the replace() method uses references to captured groups (such as $1) 
 * to assemble the replacement string.
 */
var result:String = input.replace(emailPattern, "<a href='$1$2$3$4'><u>$1$2$3$4</u></a>"); 

return result;
}
}
}

=>CurrencyConverter .as

package com.cen.programmingas3.wikiEditor
{

/**
 * 美元轉換成歐元類
 */
public class CurrencyConverter {
/**
 * 美元轉換成歐元
 * Converts strings of US dollar values (such as "$9.95") 
 * to Euro strings (such as "8.24 €".
 */
public static function usdToEuro(input:String):String {

/**
 * 美元正則表示式模式
 */
var usdPrice:RegExp = /\$([\d][\d,]*\.\d+)/g;

/**
 * Replaces the matching dollar strings with the Euro equivalent string.
 * The second parameter defines a function, used to define the 
 * replacement string.
 */
return input.replace(usdPrice, usdStrToEuroStr); 
}

/**
 * 如果replace()方法第二個引數:為函式,則會向其傳遞如下引數:
 * - (1)、匹配部分:The matching portion(部分) of the string, such as "$9.95";
 * - (2)、括號匹配項:The parenthetical(括號) match, such as "9.95";
 * - (3)、匹配開始下標:The index position in the string where the match begins;
 * - (4)、原始字串:The complete string;
 * 
 * This method takes the second parameter (args[1]), converts it to
 * a number, and then converts it to a Euro string, by applying a
 * conversion factor and then appending the € character.
 */
private static function usdStrToEuroStr(...args):String {
// 美元數值:
var usd:String = args[1];

// 去除逗號:
usd = usd.replace(",", "");

// 美元轉換成歐元匯率:
var exchangeRate:Number = 0.828017;

// 歐元值:
var euro:Number = Number(usd) * exchangeRate;

// 歐元符號:
const euroSymbol:String = String.fromCharCode(8364);

return euro.toFixed(2) + " " + euroSymbol;
}
}
}

相關推薦

flex_(5)表示式_WikiEditor解析程式

=>WikiEditor.mxml <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    xmlns:s

python3 學習5 表示式,re模組學習

  正則表示式: 正則表示式有特殊的語法,有些符號需要轉義,所以一般來說使用原始字串模式,也就是r''。 轉自:https://blog.csdn.net/qq_33720683/article/details/81023115 模式 描述

表示式之C程式中使用

POSIX規定了正則表示式的C語言庫函式,詳見regex(3)。我們已經學習了很多C語言庫函式的用法,讀者應該具備自己看懂man手冊的能力了。本章介紹了正則表示式在grep、sed、awk中的用法,學習要能夠舉一反三,請讀者根據regex(3)自己總結正則表示式在C語言中的用法,寫一些簡單的程式,例

python爬蟲5——表示式

正則表示式很好用,之前沒有體會到它的強大,在寫原生的servlet程式,呼叫微服務時,要經常拼接字串,寫sql,需求轉換成程式碼,沒有個靈活的工具處理,真的是會被煩死的。就用sublime_txt +正則表示式,賊好用!   為什麼要學正則表示式 實際上爬蟲一共就四個主要步驟:

網頁 EL表示式無法解析和http網頁400錯誤

關於EL正則表示式無法解析的問題 <fmt:formatDate value="${user.bir }" pattern=“yyyy-MM-dd”/> 查看了jsp頁面程式碼: <%@taglib uri="http://java.sun.co

JavaScript表示式練習解析1

var url = 'http://blog.163.com/album?id=1#comment'; var reg = /^(https?:)\/\/([^\/]+)(\/[^\?]*)?(\?[^#]*)?(#.*)?$/; * ​ ^(https?:) 開頭為https: s?表示s{

python3 2018分散式爬蟲教程 -5 表示式

1.正則表示式常見匹配模式: 模式 描述 \w 匹配字母數字及下劃線 \W 匹配非字母數字下劃線 \s 匹配任意空白字元

Python練習5-表示式

第 0004 題:任一個英文的純文字檔案,統計其中的單詞出現的個數。 這道題題意很模糊,統計“單詞”其實很複雜,因為需要詞典才能知道一個詞到底是不是單詞,這裡應該就是簡單的連續英文字母在一塊就算一

2018最新版 手機號、驗證碼表示式 jq + 小程式

HTML: <!-- 表單 --> <input class="weui-input" id="tel" type="tel" placeholder="請輸入手機號"> <input class="weui-input" t

利用java表示式解析並獲取指定的字串

Java的正則表示式不僅可以用來匹配驗證字串是否符合標準型別,還可以用來解析字串,獲取自己想要得到的資料。在java.util.regex包下提供了系列的類來對字串進行匹配。來看一下下面的例子: public static String parse (String s)

2.5 表示式

1、正則表示式(Regexp) 正則表示式是對字串操作的公式,用來過濾字串或者從字串中匹配出我們需要的字元,在各類語言中都有應用 2、基礎操作字元 介紹一下常用的幾個字元,想要了解更多功能,可以看看百科中的介紹 百度百科 https://baike.baidu.c

表示式關鍵詞解析

子模式  在使用正則表示式的時候,我們經常會使用()把某個部分括起來,稱為一個子模式。 子模式有Capturing和Non-Capturing兩種情況。  Capturing指獲取匹配or捕獲匹配 ,是指系統會在幕後將所有的子模式匹配結果儲存起來,供我們查詢或者替換。如後向引用的使用; &

微信小程式-表示式(驗證手機號-身份證-郵箱..)

手機號驗證: if (!(/^1[34578]\d{9}$/.test(e.detail.value.phone))) { wx.showToast({ title: '手機號碼有誤', duration: 2000, icon:'none' }); return false

【Python3 爬蟲學習筆記】基本庫的使用 12—— 表示式 5

6. compile() compile()方法可以將正則字串編譯成正則表示式物件,以便在後面的匹配中複用。示例程式碼如下: import re content1 = '2016-12-15 12:00' content2 = '2016-12-17 12:55' content3

解析posix與perl標準的表示式區別

正則表示式(Regular Expression,縮寫為regexp,regex或regxp),又稱正規表示式、正規表示式或常規表示式或正規化表示法或正規表示法,是指一個用 來描述或者匹配一系列符合某個句法規則的字串的單個字串。在很多文字編輯器或其他工具裡,正則表示式通常被用來檢索和/或替換那些符合某個模式的

C#Json文件解析,寫入,表示式轉換。Unity建立Json文件以及寫入。

C#:     解析:         解析工具:LitJson,JsonConvert       &nb

Python指令碼--基於表示式對檔案進行解析

Python指令碼--基於正則表示式對檔案進行解析     首先需要了解正則表示式中的相應指令(compile、findall),我對此的理解是compile相當於一個規則的制定者,將匹配的規則制定出來,後續具體的操作是findall的工作【選擇適當的規則

python html抓取,並用re表示式解析(一)

html抓取,並用re進行解析 #coding=utf-8 import urllib.request import re ''' url :"http://money.163.com/special/pinglun/" 抓取第一頁的新聞資訊,並按照以下規格輸出。 [ {'ti

python html抓取,並用re表示式解析(二)

需求: url: “http://search.jd.com/Search?keyword=幼貓貓糧&enc=utf-8#filter” 給出一個jd_search(keyword)方法,keyword為你要查詢的東西,比如:貓糧、手機,替換上面url中的keyword,得到一個新網

PHP表示式獲取武漢市的實時pm2.5資料並郵件傳送phpmailer

最近讀了PHP與mysql web開發這本書學習PHP,感覺受益匪淺,PHP是由C語言所編寫的,所以C語言的語法在PHP中同樣適用如printf與PHP的echo一樣具有輸出功能,(換行)。學習了PHP語言的正則表示式來抓取網頁內容,又讀到了php的mail函式時想用來發送郵件,但是ma