Erste Post, so tut mir leid, wenn ich nicht genug Informationen zur Verfügung stellen, aber ich werde mein Bestes versuchen. Auch ist es wahrscheinlich klug zu beachten, dass ich nur minimale Kenntnisse davon habe, ich weiß im Grunde, was dieser Code tut und das ist es.Regex if Anweisung Probleme
Kurz gesagt, ich bin ein Mitglied oder eine Simulationsspielgemeinschaft, die hauptsächlich aus herumlaufen von der Polizei besteht. Das Spiel protokolliert alle Chat-Nachrichten, die direkt an eine .txt-Datei gesendet werden, und dieser Code durchsucht das Chatlog nach einem der im unten stehenden Code aufgeführten Parameter. Wenn es mit einem übereinstimmt, wird der entsprechende "Piep" abgespielt.
Die ersten beiden arbeiten aber die dritte Ich habe einige Kämpfe mit und fragte mich, ob jemand hier mir helfen könnte zu verstehen. Eines der Merkmale dieser „Bullen“ haben, ist eine Geschwindigkeit Waffe, die wie so Ergebnisse im Spiel zeigt:
user clocked @ 105kph/ 65mph• ignored
*
user clocked @ 138kph/ 86mph•
**
* das ist unterhalb der Geschwindigkeitsbegrenzung
** dies ist über der Geschwindigkeitsbegrenzung
jedoch im Chatlog erscheinen sie wie folgt aus:
user ^Lclocked @ 138kph/ 86mph•
user ^Lclocked @ 63kph/ 39mph•^L ignored
i variiert Wildcards haben versucht, (sie arbeiten unter der Annahme) und den Code in beiden Moden zu schreiben wie so:
Regex expspeeding = new Regex(@"mph• ", RegexOptions.IgnoreCase);
Regex expspeeding = new Regex(@"#mph•^L ignored ", RegexOptions.IgnoreCase);
, aber es funktioniert einfach nicht.
Unten ist der Hauptteil von dem, was ich habe, bitte, wenn jemand sogar eine Richtung vorschlagen kann, um darin zu gehen, würde sehr geschätzt werden.
Alle Fragen, die Sie haben, werde ich mein Bestes versuchen zu beantworten.
Danke für Ihre Zeit.
{
public partial class Form1 : Form
{
LogFileTracer tracer;
// The search patterns
Regex expdc = new Regex(@"Disconnected", RegexOptions.IgnoreCase);
Regex expidle = new Regex(@"You will be kicked soon", RegexOptions.IgnoreCase);
Regex expnospeeding = new Regex(@"?• ignored", RegexOptions.IgnoreCase);
public Form1()
{
InitializeComponent();
tracer = new LogFileTracer();
tracer.onTextReceived += Tracer_onTextReceived;
}
// Event if line was read from logfile
private void Tracer_onTextReceived(string text)
{
try
{
if (InvokeRequired)
{
// Thanks Microsoft for that threading bullcrap
this.Invoke(new LogFileTracer.TextReceivedDelegate(Tracer_onTextReceived), text);
return;
}
}
catch
{
// Nobody cares
}
if (text == null || text.Length == 0) return;
// Check whether any of the patterns match
if (expdc.IsMatch(text))
{
// play sound pattern
txtEventLog.AppendText(text + "\r\n");
Console.Beep(1000, 100);
Console.Beep(750, 100);
Console.Beep(500, 100);
}
else if (expidle.IsMatch(text))
{
// play sound pattern
txtEventLog.AppendText(text + "\r\n");
Console.Beep(2000, 50);
Console.Beep(2050, 50);
Console.Beep(2000, 50);
}
else if (expnospeeding.IsMatch(text))
{
// play sound pattern
txtEventLog.AppendText(text + "\r\n");
Console.Beep(1000, 50);
Console.Beep(2050, 50);
Console.Beep(2000, 50);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
LblStatus.Text = "Logger Status: " + (tracer.isAlive ? "running" : "dead");
}
private void Form1_Load(object sender, EventArgs e)
{
// Try to start the reader with the textbox
if (!string.IsNullOrEmpty(TxtFilename.Text)) tracer.start(TxtFilename.Text);
}
private void CmdStart_Click(object sender, EventArgs e)
{
// Start or restart the tracer
tracer.start(TxtFilename.Text);
}
}
}
Der Code sieht aus wie C# nicht VB. Sie haben auch keine Frage gestellt. Kannst du etwas genauer sein? – peterG
Nicht sicher, was Sie versuchen zu tun, aber dieses "? • ignored" ist kein gültiger Regex. – sln