ورود

View Full Version : جستجو در متن با REgex



hana1369
سه شنبه 01 اسفند 1391, 11:26 صبح
با سلام خدمت همه برنامه نویسان عزیز
یکی به داد من برسه!
دوستان من یه تکستک باکس دارم که یه کلمه رو توش مینوسم
و میخوام این کلمه رو جستجو کنم توی کل مطالبی که وب فرمم هست
اگه وجود داشت highLight کنه
خیلی در مورد REGEX سرچ کردم ولی چی نیافتم
و متوجه نشدم چطوری استفاده کنم
لطفا کمک کنید
خیلی فوریه
مرسی

hana1369
سه شنبه 01 اسفند 1391, 20:03 عصر
من با این کدی که نوشتم کلمه رو داخل متن پیدا میکنه
protected void Button2_Click(object sender, EventArgs e)
{
string patern = txtContactsSearch.Text;
Match match = Regex.Match(TextBox1.Text, patern);
if (match.Success)
{

string value = match.Value.ToString();
Response.Write(value.ToString());

}
}
البته فقط یه تسته این
کلمه رو پیدا میکنه تو متن
حالا میخوام مکان او کلمه رو پیدا کنه و اون رو های لایت کنه
لطفا راهنمایی کنید!
ذهنم خیلی درگیرشه
مرسی

morteza_mokhtari
سه شنبه 01 اسفند 1391, 22:07 عصر
$(document).ready(function () {

var myString = document.getElementById("search").value;
if (myString == "notAllow") {
ShowAlertMessage('خطا', '', 'کاربر گرامی فاصله بین دو جستجوی متوالی حداقل باید یک دقیقه باشد لطفا پس از یک دقیقه مجددا تلاش کنید.');
}
else {
myArray = myString.split("-");
for (i = 0; i < myArray.length; i++) {
$('#main').highlight(myArray[i]);
}
}

}
});



jQuery.fn.highlight = function (pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.each(function () {
innerHighlight(this, pat.toUpperCase());
});
};



.highlight
{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
background-color: #FFCC00;
padding: 0px 2px;
}

hana1369
سه شنبه 01 اسفند 1391, 22:36 عصر
$(document).ready(function () {

var myString = document.getElementById("search").value;
if (myString == "notAllow") {
ShowAlertMessage('خطا', '', 'کاربر گرامی فاصله بین دو جستجوی متوالی حداقل باید یک دقیقه باشد لطفا پس از یک دقیقه مجددا تلاش کنید.');
}
else {
myArray = myString.split("-");
for (i = 0; i < myArray.length; i++) {
$('#main').highlight(myArray[i]);
}
}

}
});



jQuery.fn.highlight = function (pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.each(function () {
innerHighlight(this, pat.toUpperCase());
});
};



.highlight
{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
background-color: #FFCC00;
padding: 0px 2px;
}


با تشکر از شما
من JQuery بلد نیستم
نمیخوام از جاوا اسکریپت و جی کیوری استفاده کنم
آیا راه حل دیگه داره؟
من از این کد هیچی سر در نمیارم
بازم مرسی

hana1369
سه شنبه 01 اسفند 1391, 22:54 عصر
دوستان این تکه کد رو ببینید:
تو این کد ایندکس شروع کلمه مورد نظر در متن، طول کلمه و خود کلمه رو در خروجی مینویسه
پس خروجی داره
و حالا میخوام این کلمه مشخص بشه های لایت بشه
مکان عنصر هم داریم که:
string patern = txtContactsSearch.Text;
Match match = Regex.Match(TextBox1.Text, patern);
if (match.Success)
{

string value = match.Value.ToString();
int i= value.Length;
int j= TextBox1.Text.IndexOf(value);
Response.Write("i=" + i.ToString());
Response.Write("j=" + j.ToString());
string aa= TextBox1.Text.Substring(j, i);
Response.Write(aa);

کمک کنید!
خیلی فوریه

hana1369
چهارشنبه 02 اسفند 1391, 16:38 عصر
سلام دوستان
مشکل حل شد
با تشکر از تمام دوستانی که کمکم کردن
اینم نمونه اش
های لایت شدن نتیجه جستجو:
هر کی خواست میتونه کامل ترش کنه و در دسترس عموم قرار بده

100327

fakhravari
پنج شنبه 03 اسفند 1391, 02:35 صبح
www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial
http://barnamenevis.org/showthread.php?67837-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%DA%A9%D8%AF-%D9%87%D8%A7%DB%8C-regular-expressions-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Expresso