① 正則表達式:除了特殊文件類型(如.lnk)之外的所有文件
有些人運行程序的時候會彈出該內存不能為「read」的錯誤提示。希望以下文章能對你有所幫助。
使用Windows操作系統的人有時會遇到這樣的錯誤信息,運行某些程序的時候,有時會出現內存錯誤的提示,然後該程序會自動關閉或點擊後關閉,嚴重的會無法關閉。
「0x????????」指令引用的「0x????????」內存。該內存不能為「read」。
「0x????????」指令引用的「0x????????」內存,該內存不能為「written」。
不知你出現過類似這樣的故障嗎?(0x後面內容有可能不一樣。)
散一般出現這個現象有方面的,一是硬體,即內存方面有問題,二是軟體,這就有多方面的問題了。
1、微軟IE緩沖溢出漏洞引起
2、內存或虛擬內存地址使用沖突造成程序的運行需要分配一定的內存地址給程序使用,當程序結束時釋放留出空間讓給新的程序使用,win是多任務的系統有時前程序未結束 又有新的任務開始到底要多少內存或虛擬內存來保證我們同時運行的工作任務呢?也許win在這個問題上沒弄好,所以有此錯誤常常發生,一般運行大型軟體或多媒體後出現這種情況
3、劣質內存條也會出現這個問題一般來說,內存出現問題的可能性並不大,主要方面是:內存條壞了、內存質量有問題,還有就是2個不同牌子不同容量的內存混插,也比較容易出現不兼容的情況,同時還要注意散熱問題,特別是超頻後。你可以使用MemTest這個軟體來檢測一下內存,它可以徹底的檢測出內存的穩定度。假如你是雙內存,而且是不同品牌的內存條混插或者買了二手內存時,出現這個問題,這時,你就要檢查是不是內存出問題了或者和其它硬體不兼容。
4、微軟WINDOWS系統的漏洞,windows把內存地址0X00000000到0X0000ffff指定為分配null指針的地址范圍,如果程序試圖訪問這一地址,則認為是錯誤。c/c++編寫的程序通常不進行嚴格的錯誤檢查,當採用malloc來分配內存而可供分配的地址空間不夠的情況下返回null指針。但是代碼不檢查這種錯誤,認為地址分配已經成功,於是就訪問0X00000000的地址,於是就發生內存違規訪問,同時該進程被終止。ASCII字元填充組成的pif文件時會出現以下情況:一個非法的pif文件(用ascii字元\''x\''填充)至少要369位元組,系統才認為是一個合法的pif文件,才會以pif的圖標[pifmgr.dll,0]顯示,才會在屬性里有程序、字體、內存、屏幕」等內容。而且僅僅當一個非pif文件的大小是369位元組時察看屬性的「程序」頁時,不會發生程序錯誤,哪怕是370位元組也不行。當對一個大於369位元組的非法pif文件察看屬性的「程序」頁時,Explorer會出錯,提示:\''***\''指令引用的\''***\''內存。該內存不能為\''read\'' ,問題出在pif文件的16進制地址:0x00000181[0x87]0x00000182[0x01]和 0x00000231[0xC3]0x00000232[0x02]即使是一個合法pif文件,只要改動這四處的任意一處,也會引起程序錯誤。而只要把0x00000181和0x00000182的值改為[0xFF][0xFF],那麼其它地址任意更改都不會引起錯誤。
5、可能沒有完全正確安裝apache服務,且啟動了它的原故; 把服務中OracleOraHomeXXHTTPServer改成停 止
6、應用程序沒有檢查內存分配失敗程序需要一塊內存用以保存數據時,就需要調用操作系統提供的「功能函數」來申請,如果內存分配成功,函數就會將所新開辟的內存區地址返回給應用程序,應用程序就可以通過這個地址使用這塊內存。這就是「動態內存分配」,內存地址也就是編程中的「指針」。內存不是永遠都招之即來、用之不盡的,有時候內存分配也會失敗。當分配失敗時系統函數會返回一個0值,這時返回值「0」已不表示新啟用的指針,而是系統向應用程序發出的一個通知,告知出現了錯誤。作為應用程序,在每一次申請內存後都應該檢查返回值是否為0,如果是,則意味著出現了故障,應該採取一些措施挽救,這就增強了程序的「健壯性」。若應用程序沒有檢查這個錯誤,它就會按照「思維慣性」認為這個值是給它分配的可用指針,繼續在之後的運行中使用這塊內存。真正的0地址內存區保存的是計算機系統中最重要的「中斷描述符表」,絕對不允許應用程序使用。在沒有保護機制的操作系統下(如DOS),寫數據到這個地址會導致立即死機,而在健壯的操作系統中,如Windows等,這個操作會馬上被系統的保護機制捕獲,其結果就是由操作系統強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現上述的「寫內存」錯誤,並指出被引用的內存地址為「0x00000000」。內存分配失敗故障的原因很多,內存不夠、系統函數的版本不匹配等都可能有影響。因此,這種分配失敗多見於操作系統使用很長時間後,安裝了多種應用程序(包括無意中「安裝」的病毒程序),更改了大量的系統參數和系統文件之後。
7、應用程序由於自身BUG引用了不正常的內存指針在使用動態分配的應用程序中,有時會有這樣的情況出現:程序試圖讀寫一塊「應該可用」的內存,但不知為什麼,這個預料中可用的指針已經失效了。有可能是「忘記了」向操作系統要求分配,也可能是程序自己在某個時候已經注銷了這塊內存而「沒有留意」等等。注銷了的內存被系統回收,其訪問權已經不屬於該應用程序,因此讀寫操作也同樣會觸發系統的保護機制,企圖「違法」的程序唯一的下場就是被操作終止運行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多啊!像這樣的情況都屬於程序自身的BUG,你往往可在特定的操作順序下重現錯誤。無效指針不一定總是0,因此錯誤提示中的內存地址也不一定為「0x00000000」,而是其他隨機數字。
如果系統經常有所提到的錯誤提示,下面的建議可能會有幫助:
1.查看系統中是否有木馬或病毒。這類程序為了控制系統往往不負責任地修改系統,從而導致操作系統異常。平常應加強信息安全意識,對來源不明的可執行程序絕不好奇。
2.更新操作系統,讓操作系統的安裝程序重新拷貝正確版本的系統文件、修正系統參數。有時候操作系統本身也會有BUG,要注意安裝官方發行的升級程序。
3.試用新版本的應用程序。
4、刪除然後重新創建 WINDOWS\Wbem\Repository 文件夾中的文件:在桌面上右擊我的電腦,然後單擊管理。在"服務和應用程序"下,單擊服務,然後關閉並停止 Windows Management Instrumentation 服務。刪除 WINDOWS\System32\Wbem\Repository 文件夾中的所有文件。(在刪除前請創建這些文件的備份副本。) 打開"服務和應用程序",單擊服務,然後打開並啟動 Windows Management Instrumentation 服務。當服務重新啟動時,將基於以下注冊表項中所提供的信息重新創建這些文件:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs
下面我從幾個例子給大家分析:
例一:打開IE瀏覽器或者沒過幾分鍾就會出現"0x70dcf39f"指令引用的"0x00000000"內存。該內存不能為「read」。要終止程序,請單擊「確定」的信息框,單擊「確定」後,又出現「發生內部錯誤,您正在使用的其中一個窗口即將關閉」的信息框,關閉該提示信息後,IE瀏覽器也被關閉。
解決方法:修復或升級IE瀏覽器,同時打上補丁。看過其中一個修復方法是,Win2000自升級,也就是Win2000升級到Win2000,其實這種方法也就是把系統還原到系統初始的狀態下。比如你的IE升級到了6.0,自升級後,會被IE5.0代替。
例二:在windowsxp下雙擊光碟裡面的「AutoRun.exe」文件,顯示「0x77f745cc」指令引用的0x00000078」內存。該內存不能為「written」,要終止程序,請單擊「確定」,而在Windows 98里運行卻正常。
解決方法:這可能是系統的兼容性問題,winXP的系統,右鍵「AutoRun.exe」文件,屬性,兼容性,把「用兼容模式運行這個程序」項選擇上,並選擇「Windows 98/Me」。win2000如果打了SP的補丁後,只要開始,運行,輸入:regsvr32 c:\winnt\apppatch\slayerui.dll。右鍵,屬性,也會出現兼容性的選項。
例三:RealOne Gold關閉時出現錯誤,以前一直使用正常,最近卻在每次關閉時出現「0xffffffff」指令引用的「0xffffffff」內存。該內存不能為「read」 的提示。
解決方法:當使用的輸入法為微軟拼音輸入法2003,並且隱藏語言欄時(不隱藏時沒問題)關閉RealOne就會出現這個問題,因此在關閉RealOne之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例四:我的豪傑超級解霸自從上網後就不能播放了,每次都提示「0x060692f6」(每次變化)指令引用的「0xff000011」內存不能為「read」,終止程序請按確定。
解決方法:試試重裝豪傑超級解霸,如果重裝後還會,到官方網站下載相應版本的補丁試試。還不行,只好換就用別的播放器試試了。
例五:雙擊一個游戲的快捷方式,「0x77f5cd0」指令引用「0xffffffff」內存,該內存不能為「read」 ,並且提示Client.dat程序錯誤。
解決方法:重裝顯卡的最新驅動程序,然後下載並且安裝DirectX9.0。
例六:一個朋友發信息過來,我的電腦便出現了錯誤信息:「0x772b548f」指令引用的「0x00303033」內存,該內存不能為「written」,然後QQ自動下線,而再打開QQ,發現了他發過來的十幾條的信息。
解決方法:這是對方利用QQ的BUG,發送特殊的代碼,做QQ出錯,只要打上補丁或升級到最新版本,就沒事了。
例七:我的筆記本電腦用的XP系統,有時關閉網頁時會彈出tbrowser.exe遇到問題需要關閉,然後有彈出0x03e7c738指令引用的0x03e7c738內存,該內存不能為read,請問是怎麼回事?
解決方法:先查殺一下病毒,另外如果你安裝了瀏覽增強之類的軟體,請卸掉。
例八:從桌面或開始菜單中打開任何一個程序, 出現錯誤提示:"0x........"指令引用的"0x00000000"內存,該內存不能為"read"。省略號代表可變值。而從運行中打開程序沒問題。
解決方法:運行regedit進入注冊表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,應該只有一個正常的鍵值", 將其他的刪除(默認鍵值當然不要刪除)。
例九:我三個月前配了台機子。系統比較不穩定,三個月內已經重裝過多次系統,四五天前剛裝過系統,可是經常隨機地出現Explorer-應用程序錯誤,「0x4a01259d「指令引用的「0x00000000"內存。該內存不能為「read"。要終止程序,請單擊「確定「。要調試程序,請單擊「取消」。如果點確定,windows桌面就不見了。這種問題在之前的系統也出現過,不知道是不是硬體的問題?
解決方法:內存的兼容性問題!遇到這類問題,用戶可以自行打開機器把內存的位置調動一下,看問題是否可以解決,如果問題依舊,可與你的朋友調換內存使用。
通過上面的幾個例子,可以看到,出現故障的原因有好多種,下面列出已經提到和有可能發生的原因,方便查閱。
問題產生原因原因--解決方法
內存條壞了--更換內存條
雙內存不兼容--使用同品牌的內存或只用一條內存
內存質量問題--更換內存條
散熱問題--加強機箱內部的散熱
內存和主板沒插好或和其它硬體不兼容等--重插內存或換個插糟
硬碟有問題--更換硬碟
驅動問題--重裝驅動。如果是新系統,要先安裝主板驅動
軟體損壞--重裝軟體
軟體有BUG--打補丁或用最新的版本。
軟體和系統不兼容--給軟體打上補丁或者試試系統的兼容模式
軟體和軟體之間有沖突--如果最近安裝了什麼新軟體,卸載了試試
軟體要使用到其它相關的軟體有問題--重裝相關軟體。比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
病毒問題--殺毒
殺毒軟體與系統或軟體沖突--由於殺毒軟體是進入底層監控系統的,可能與一些軟體沖突,卸載了試試
系統本身有問題--有時候操作系統本身也會有BUG,要注意安裝官方發行的升級程序,像SP的補丁,最好要打上。如果還不行重裝系統或更換其它版本的系統了。
〔又一說〕
在控制面板的添加/刪除程序中看看你是否安裝了微軟NET.Framework,如果已經安裝了,可以考慮卸載它,當然如果你以後在其它程序需要NET.Framework時候,可以再重新安裝。
另外,如果你用的是ATI顯卡並且你用的是SP2的補丁(一些ATI的顯卡驅動需要在NET.Framework正常工作的環境下)。這種情況你可以找一款不需要NET.Framework支持的ATI顯卡驅動。
如果以上兩種方法並不能完全解決問題,你試著用一下「IE修復」軟體,並可以查查是否有病毒之類的。
〔微軟NET.Framework升級到1.1版應該沒問題了〕
〔還有一說〕
方法一:
微軟新聞組的朋友指點:開始--運行:regsvr32 jscript.dll
開始--運行:regsvr32 vbscript.dll
不過沒解決---但提供了路子-----一次運行注冊所有dll
搜索查找到方法如下:
運行 輸入cmd 回車在命令提示符下輸入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
這個命令老兄你慢慢輸 輸入正確的話會看到飛快地滾屏 否則……否則失敗就是沒這效果。回車後慢慢等(需要點時間1-2分鍾) 都運行完再打開看
方法二:
這是個典型問題~~~~~引起這個問題的原因很多。一般來講就是給系統打上補丁和更換內存、給內存換個插槽這3種方法來解決。[系統補丁只要到Microsoft Update網站在線更新就可以了
② js中用正則表達式判斷字元串的格式
|
letregex=/^((a|file)(.+)|(img|aio|video))[.+]$/i;
test('shouldtestok',()=>{
letregex=/^((a|file)(.+)|(img|aio|video))[.+]$/i;
expect(regex.test('file(a)[b]')).toBe(true);
expect(regex.test('file[b]')).toBe(false);
expect(regex.test('file(b)')).toBe(false);
expect(regex.test('a(a)[b]')).toBe(true);
expect(regex.test('img[c]')).toBe(true);
expect(regex.test('aio[e]')).toBe(true);
expect(regex.test('video[e]')).toBe(true);
expect(regex.test('video(d)[e]')).toBe(false);
expect(regex.test('aio(d)[e]')).toBe(false);
expect(regex.test('img(d)[e]')).toBe(false);
})
③ 正則表達式獲取文件類型
/\.(\w+)$/
取到擴展名,再判斷
④ 判斷是否是EXCEL文件的正則表達式
^.*\.xls.?$
驗證這樣形式的: ?????.xls?
或者:^.*\.xlsx?& 匹配所有.xls結尾的文件或.xlsx的文件
⑤ C#中用正則表達式檢測.cs文件頭文件注釋格式是否正確
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^\s*/\*((\s)*(?<line>.+)\s*)+\*/");
bool isDateValid, isAuthorValid, isOverviewValid;
isDateValid = isAuthorValid = isOverviewValid = false;
System.Text.RegularExpressions.Match m=reg.Match("/*\r\nauthor:#######\r\ndate: ####### \r\noverview:####### \r\n*********/ ");
bool isCommentValid = false;
if (m.Success)
{
foreach (System.Text.RegularExpressions.Capture cap in m.Groups["line"].Captures)
{
string line = cap.Value.Trim().ToLower();
if (line.StartsWith("date:")) isDateValid = true;
if (line.StartsWith("overview:")) isOverviewValid = true;
if (line.StartsWith("author:")) isAuthorValid = true;
WL(line);
}
isCommentValid = isDateValid && isOverviewValid && isAuthorValid; //文檔是否合法
}
//isCommentValid 就是你需要的
注意:你給的例子中使用的是中文的冒號,我判斷改用了英文的冒號。如果確實用的中文,那就改下代碼。
⑥ 正則表達式如何匹配excel文件
Excel文件,常見格式有
*.xls;*.xl*;*.xla;*.xlt;*.xlm;*.xlc;*.xlw
使用正則表達式,可以用/.xl.{1,2}$/
下面著重看Excel2007+中的常用文件格式回:答
*.xlsx:基於XML文件格式的Excel2007工作簿預設格式
*.xlsm:基於XML且啟用宏的Excel2007工作簿
*.xltx:Excel2007模板格式
*.xltm:Excel2007宏模板
*.xlam:Excel2007宏載入項
*.xlsb:Excel2007為大的或復雜的工作簿新引入的非XML二進制文件格,允許優化執行和向後兼容。
可以用另一個正則表達式,來精確匹配這6種格式
/.xl(s[xmb]|t[xm]|am)$/
⑦ 用java正則表達式來過濾Excle格式。比如Excle文件格式有.xlsx」和.xls兩種。那麼正則表達式怎麼寫呢。
package com.landray.kmss.sys.webservice.client;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
/**
* <b>解釋下:^(?:\\w+\\.xlsx|\\w+\\.xls)$</b><br>
* ^$代表開始和結束位置<br>
* (?:)代表非捕獲組(提高捕獲速度)<br>
* \w+代表最少有一個任何一個字母或者數字或者下劃線,最多不限制<br>
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 表達式對象
Pattern p = Pattern.compile("^(?:\\w+\\.xlsx|\\w+\\.xls)$");
// 創建 Matcher 對象
Matcher m = p.matcher("sdfa_1.xlsx");
// 是否完全匹配
System.out.println(m.matches());;
}
}
⑧ 正則表達式匹配文件類型
我這里剛寫過是:判斷是否上傳的是Excel文件,你改下就OK了
function
CheckForm()
{
var
upload=document.getElementsByName("file")[0].value;
var
ext=upload.substring(upload.lastIndexOf(".")+1,upload.length);
if
(document.getElementsByName("file")[0].value.length
==
0)
{
alert("請輸入您要解析的Excel文件!");
document.getElementsByName("file")[0].focus();
return
false;
}
if(ext!="xls"&&ext!="XLS"&&ext!="Xls"&&ext!="XLs"&&ext!="xLS"&&ext!="xlS"){
alert("你上傳的文件不是excel文件");
document.getElementsByName("file")[0].focus();
return
false;
}
return
true;
}
⑨ Linux如何使用正則表達式命令文本文件操作命令
Linux對文本操作命令及正則表達式:
cat
cat 是 concatenate 的縮寫,所以它的作用其實是連接文件。但默認情況下它會將連接文件的結果送到標准輸出。所以我們常用來顯示文件內容。類似於 dos 中的 type。
more
當一個文件的內容超過一屏後,我們可以用 more 這個指令來逐屏 察看 文件內容。
less
less 在 more 的基礎上,更可以逐行 察看 ,前後翻頁。
head
head 顯示文件開頭部分內容,默認顯示前十行參數 --lines 或者 –n 指明顯示行數基本格式:
tail
tail 顯示文件結尾部分內容,命令用法同 head,參數 -f 顯示文件的紀實更新,用於監視日誌文件
tail 默認顯示文件列表中每個文件的後 10 行,如果沒有文件名或文件名為「-」則其從標准輸入中讀取文件,如果有多個文件則其會在文件前面加上「==>文件名<==」以便區別。
# tail /etc/mail/sendmail.mc 默認查看文件的後 10 行內容
# tail –n 20 /etc/passwd 查看文件後 20 行內容
注意: # tail –f /var/log/message 實時監控日誌文件更新信息,非常重要
diff
diff 用於比較兩個文件之間的區別,並送到標准輸出。輸出時先報告兩個文件的哪一行不同。基本格式:
參數:
uniq 用於去除文本中相鄰的重復行。
-u 參數可以只顯示那些沒有被重復過的行。 -d 顯示有被重復過的行。
cut
cut 可以根據一個指定的標記(默認是 tab)來為文本劃分列,然後將此列顯示。使用許可權:所有使用者
基本格式: cut -cnum1 -num2 filename
說明:顯示每行從開頭算起 num1 到 num2 的文字。
[root@uplooking root] $ cut –f1 –d: /etc/shadow 表示以 : 為分隔符,顯示 /etc/shadow 的第一列 sort
sort 用來按各種需要重新排列文本,一般運用在一個管道之後。例如:
默認情況下 sort 按照字母順序排列文本。
wc
wc 用來統計一個文件的行數、詞數、字數並送到標准輸出。也可以用-l(行數)、-w(詞數)、-c(字數)來指定輸出內容。
⑩ 正則表達式,如何判斷文件名後綴是否為csv、xls、xlsx
<input type="file" value="瀏覽" id="file" onchange=" " onclick=" "/>
在input中想要獲取上傳的文件名,那麼onclick事件是不行的,因為一點擊input那麼onclick事件就執行,但是這時候還沒上傳內容,但是onchange事件是上傳完成後才執行的事件
以下方法就是判斷是否是excel文件
var File=document.getElementById(「file」);
var str=File.value;
1、查找字元串
if(str.indexOf("xls")<0&&str.indexOf("xlsx")<0)
{
alert("請選擇格式為.xls或.xlsx的文件!");
return false;
}
2、正則表達式:
var reg = /(?:jpg|gif|png|jpeg)$/;
reg.test(obj.value)
文件格式(或文件類型)是指電腦為了存儲信息而使用的對信息的特殊編碼方式,是用於識別內部儲存的資料。比如有的儲存圖片,有的儲存程序,有的儲存文字信息。每一類信息,都可以一種或多種文件格式保存在電腦存儲中。
每一種文件格式通常會有一種或多種擴展名可以用來識別,但也可能沒有擴展名。擴展名可以幫助應用程序識別的文件格式。對於硬碟機或任何電腦存儲來說,有效的信息只有0和1兩種。所以電腦必須設計有相應的方式進行信息-位元的轉換。對於不同的信息有不同的存儲格式。