expression reguliere en c#.net
Dernière réponse : dans Programmation
[#ff7f00]
salut à tous!!!
j'ai un probleme de compilation!!!
D'abord, je veux declarer une variable en c# dans mon expression reguliere
par ex je veux declarer une ex.reguliere:
Regex cmd = new Regex("^[
igit:]+[
]$", var1);
et ce var1= a une requete sql qui cherche dans toutes les tables d'une base de données déjà crée s'il existe ou non;
explication:
j'ai une base de données avec 2 tables
quand l'utilisateur entre une chaine (par exp): 3 stylo
il va compiler :
3 juste
et stylo va chercher dans les 2 tables si existe il va dire juste sinon faux.
donc mon pb est que je sais pas creer ce code en c#!!!!!!!!!!
Veuillez svp me repondre rapidement et merci bcccccccccccccccp
salut à tous!!!
j'ai un probleme de compilation!!!
D'abord, je veux declarer une variable en c# dans mon expression reguliere
par ex je veux declarer une ex.reguliere:
Regex cmd = new Regex("^[
igit:]+[
]$", var1);et ce var1= a une requete sql qui cherche dans toutes les tables d'une base de données déjà crée s'il existe ou non;
explication:
j'ai une base de données avec 2 tables
quand l'utilisateur entre une chaine (par exp): 3 stylo
il va compiler :
3 juste
et stylo va chercher dans les 2 tables si existe il va dire juste sinon faux.
donc mon pb est que je sais pas creer ce code en c#!!!!!!!!!!
Veuillez svp me repondre rapidement et merci bcccccccccccccccp
Autres pages sur : expression reguliere net
Lassé par la pub ? Créez un compte
Tu pourrais aussi faire une combobox en faisant des propositions dans la liste déroulante au fur et à mesures que l'utilisateur tapes des lettres (comme googlesearch).
Est-ce une application windows ou une application web ?
Tu peux aussi mettre un masque de saisie sur la combobox afin d'obliger l'utilisateur à taper un chiffre et un mot.
Ensuite, le split est effectivement le plus simple et le plus rapide pour dépiler le champs, mais il faut être certain d'en contrôler le format.
Est-ce une application windows ou une application web ?
Tu peux aussi mettre un masque de saisie sur la combobox afin d'obliger l'utilisateur à taper un chiffre et un mot.
Ensuite, le split est effectivement le plus simple et le plus rapide pour dépiler le champs, mais il faut être certain d'en contrôler le format.
merci bien pour vous!!!
je crois que vous m'avez pas bien compris!!!
mon application windows consiste à verifier par le code et ne pas avec combobox (si c'est le cas il va etre tres simple je sais ) mais le pb reside comment choisir une expression reguliere qui a comme parametre une variable qui est reliée a la base de données
je crois que vous m'avez pas bien compris!!!
mon application windows consiste à verifier par le code et ne pas avec combobox (si c'est le cas il va etre tres simple je sais ) mais le pb reside comment choisir une expression reguliere qui a comme parametre une variable qui est reliée a la base de données
Je me trompe sûrement, mais je ne vois pas trop l'intérêt d'utiliser une expression régulière pour faire une recherche textuelle dans 2 tables.
La base de donnée est un SqlServer 2005 ?
Si oui, tu peux lancer une requête textuelle dans la base de ton choix. C'est exactement ce que tu veux faire.
Sinon, le plus simple est de faire le select qui va bien avec une jointure sur les 2 tables et avec une clause where avec un like.
ce serait d'ailleurs plus performant d'en faire une procédure stockée.
La base de donnée est un SqlServer 2005 ?
Si oui, tu peux lancer une requête textuelle dans la base de ton choix. C'est exactement ce que tu veux faire.
Sinon, le plus simple est de faire le select qui va bien avec une jointure sur les 2 tables et avec une clause where avec un like.
ce serait d'ailleurs plus performant d'en faire une procédure stockée.
Une autre possibilité est de ramener un DataSet contenant tes 2 tables (ultra-déconseillé si les tables sont volumineuses) et parcourir avec un foreach les rows dans lesquelles tu recherches ton fragment de mot.
A mon avis, c'est encore mieux de laisser ça au sgbd. Surtout si un index est utilisé pour les colonnes de recherche
A mon avis, c'est encore mieux de laisser ça au sgbd. Surtout si un index est utilisé pour les colonnes de recherche
vraiment merci treeees bien pour tes reponses!!
mais vraiment j'ai essayé sans succes de creer une expression régulière
de telle facon quand l'utilisateur rentre par exemple "3 L lait"
"3" et "l" sont facile a representer "[
igit:]L" et lait va le chercher dans les table s'il existe
j'espere que t'as compris mon besoin
j'ai pas pu creer cette expression régulière qui respecte ca et la requete correspondante
NB:ma base de donnée est un SqlServer 2005
mais vraiment j'ai essayé sans succes de creer une expression régulière
de telle facon quand l'utilisateur rentre par exemple "3 L lait"
"3" et "l" sont facile a representer "[
igit:]L" et lait va le chercher dans les table s'il existej'espere que t'as compris mon besoin
j'ai pas pu creer cette expression régulière qui respecte ca et la requete correspondante
NB:ma base de donnée est un SqlServer 2005
lauranet a dit :
vraiment merci treeees bien pour tes reponses!!mais vraiment j'ai essayé sans succès de creer une expression régulière
de telle façon quand l'utilisateur rentre par exemple "3 L lait"
"3" et "l" sont facile a représenter "[
igit:]L" et lait va le chercher dans les table s'il existej'espère que t'as compris mon besoin
j'ai pas pu créer cette expression régulière qui respecte ca et la requête correspondante
NB:ma base de donnée est un SqlServer 2005
Possibilités :
* Faire une recherche textuelle dans la base. Tu auras des exemples sur le site de msdn2 de microsoft.
* Passer un tableau de mots à la procédure stockée. Dans la procédure stockée, tu construis dynamiquement une requête sql avec des clauses where multiples (WHERE champ1 like $mot1 OR champ1 like $mot2 OR champ like $mot3...)
* Récupérer un dataset dans la couche de données de ton application, construire un tableau d'expression régulières déterminées basée sur chaque mot clé à rechercher (1 expression régulière par mot clé), puis parcourir le dataset on comparant les mots clés.
Perso, je mettrais en place la solution 1.
lauranet a dit :
j'ai pas compris la premiere solutionet j'ai entré dans ce site et j'ai pas trouvé ou il se trouve les exemples
Il s'agissait de cette fonctionnalité : http://www.microsoft.com/france/technet/produits/sql/2005/info/info.asp?mar=/france/technet/produits/sql/2005/info/20050728_recherche_texte_sql2005.html&xmlpath=/france/technet/produits/sql/2005/eval.xml&rang=1
Toutefois, si tu tiens absolument à utiliser les expressions régulières, tu devrais opter pour l'option n°2.
oui effectivement je vois que la 2eme qui me convient et j'ai deja pense a cettte solution mais puisque je suis tres debutante concernant la manipulation des requetes et des expressions regulieres j'ai pas arrive a la cfaire correcte donc veuillez m'aider au code!!!!!!!!!!!
et merci infiniment!!!!!!!!!!
et merci infiniment!!!!!!!!!!
Pour t'aider efficacement, il nous faudrait en savoir plus :
- Dans quels champs rechercher l'information ?
- Ta procédure stockée, tu la veux en SQL ou en c# ?
- Quelle doit être la sortie de la procédure stockée ?
=> Un booléen pour indiquer oui ou non j'ai trouvé les mots ?
=> Les lignes qui matchent la recherche ?
=> Un aggregat quelconque ?
- Plus d'autres questions qui ne me viennent pas pour l'instant, mais qui, j'en suis certain, sont capitales !
- Dans quels champs rechercher l'information ?
- Ta procédure stockée, tu la veux en SQL ou en c# ?
- Quelle doit être la sortie de la procédure stockée ?
=> Un booléen pour indiquer oui ou non j'ai trouvé les mots ?
=> Les lignes qui matchent la recherche ?
=> Un aggregat quelconque ?
- Plus d'autres questions qui ne me viennent pas pour l'instant, mais qui, j'en suis certain, sont capitales !
concernant procedure stoké c'est pas important qu'il soit en sql ou c#
et pour aussi tes autres questions vous pouver procedez de n'importe quelle facon!!!!! l'essentiel pour moi est la compilation c'est ca mon vrai but!!!
verification de la chaine entrante qui doit commencer par entiet suivi d'un mot qui doit etre exister au niveau d'une table de ma base de données et apres on voit dans une label expression correcte sinon expression non correcte
et pour aussi tes autres questions vous pouver procedez de n'importe quelle facon!!!!! l'essentiel pour moi est la compilation c'est ca mon vrai but!!!
verification de la chaine entrante qui doit commencer par entiet suivi d'un mot qui doit etre exister au niveau d'une table de ma base de données et apres on voit dans une label expression correcte sinon expression non correcte
Désolé, j'ai été bloqué en réunion avec ma MOA...
Bon, un extrait de code te suffira, je pense :
Bon, un extrait de code te suffira, je pense :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Test_Affinage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CheckField()
{
// Vérification du format de saisie...
Regex exp = new Regex("^[1-9]{1} [a-zA-Z]{1,}");
if (exp.IsMatch(textBox1.Text))
{
// Séparation des mots clés à rechercher
String[] keys = textBox1.Text.Split(" ".ToCharArray());
// Construction de la première requête SQL
String sql = BuildSql(keys);
// Exécuter la requête sql
// ...
// Tester si nb1>0 ou si nb2>0, alors on a trouvé les mots clés en base
// ...
}
else label1.Text = "Vous devez saisir un chiffre, un espace et un mot clé";
}
private String BuildSql(String[] keys)
{
// Variables
StringBuilder sql = new StringBuilder();
// Création de l'ossature de la requête
sql.Append("SELECT nb1, nb2 FROM ");
// Première table
sql.Append("(SELECT COUNT(*) nb1 FROM Table1 WHERE ");
// Boucle sur les mots clés
bool separator = false;
for (int i = 1; i < keys.Length; i++)
{
if (separator) sql.Append("OR ");
sql.Append("champ1 LIKE '%");
sql.Append(keys[i]);
sql.Append("%' OR champ2 LIKE '%");
sql.Append(keys[i]);
sql.Append("%' ");
separator = true;
}
sql.Append(") tb1,");
// Seconde table
sql.Append("(SELECT COUNT(*) nb2 FROM Table2 WHERE ");
// Boucle sur les mots clés
separator = false;
for (int j = 1; j < keys.Length; j++)
{
if (separator) sql.Append("OR ");
sql.Append("champ1 LIKE '%");
sql.Append(keys[j]);
sql.Append("%' OR champ2 LIKE '%");
sql.Append(keys[j]);
sql.Append("%' ");
separator = true;
}
sql.Append(") tb2;");
// Retour
return sql.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
CheckField();
}
}
}
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumExpression reguliere perl accent
- ForumGenerateur expression reguliere php
- ForumJavascript expression reguliere nom
- ForumPhp expression reguliere joker
- ForumExpression reguliere sauf la chaine php
- ForumPerl expression reguliere accent
- solutionsJavascript expression reguliere url
- ForumPerl expression reguliere
- ForumExpression reguliere mot de passe
- ForumExpression reguliere date javascript
- Voir plus