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 <a>"/>
<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:
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